コンビネータ
項 ::= 変数 | 定数 | 項(項)
λx.x+1 : (lambda (x) (+ x 1))
(λx.x+1)3 : ((lambda (x) (+ x 1)) 3)
Iコンビネータ
λ式
λx.x
I = λ(x)[x]
Scheme
(define I (lambda (x) x))
Sコンビネータ
λ式
S = λ(f)[λ(g)[λ(x)[f(x)(g(x))]]]
Scheme
(define S (lambda (f) (lambda (g) (lambda (x) ((f x) (g x))))))
Kコンビネータ
λ式
K = λ(x)[λ(y)[x]]
Scheme
(define K (lambda (x) (lambda (y) x)))
Yコンビネータ
λ式
λ(f)[λ(x)[f(x))λ(x)[f(xx)]]
Scheme
(define Y
(lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg)))))))
最終更新:2007年05月16日 02:37