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)