kobapan@wiLiki
Login
Scheme:CHICKEN

Scheme:CHICKEN:基本構文

目次

手続き

Module scheme - The CHICKEN Scheme wiki

基礎は lambda式

(lambda (x) (+ x x))              ===>  a procedure
((lambda (x) (+ x x)) 4)          ===>  8

lambda式にdefineで名前を付ける

(define reverse-subtract
  (lambda (x y) (- y x)))
(reverse-subtract 7 10)           ===>  3

クロージャー形式

(define add4
  (let ((x 4))
    (lambda (y) (+ x y))))
(add4 6)                          ===>  10

引数の形式

((lambda x x) 3 4 5 6)                  ===>  (3 4 5 6)
((lambda (x y . z) z)
 3 4 5 6)                               ===>  (5 6)

引数の拡張形式

<parameter-list> ==> <required-parameter>*
                     [#!optional <optional-parameter>*]
                     [#!rest <rest-parameter>]
                     [#!key <keyword-parameter>*]
<required-parameter> ==> <ident>
<optional-parameter> ==> <ident>
                         | (<ident> <initializer>)
<rest-parameter> ==> <ident>
<keyword-parameter> ==> <ident>
                        | (<ident> <initializer>)
<initializer> ==> <expr>

((lambda x x) 3 4 5 6)       => (3 4 5 6)
((lambda (x y #!rest z) z)
 3 4 5 6)                    => (5 6)
((lambda (x y #!optional z #!rest r #!key i (j 1)) 
    (list x y z i: i j: j))
 3 4 5 i: 6 i: 7)            => (3 4 5 i: 6 j: 1)

Debian
Emacs
Firefox
Gauche
JavaScript
Linux
Scheme
org-mode/latex

More ...