K
K a b → a
h(f,g)=λ(x)f(g(x))
(Y→Z)x(X→Y)→ (X→Z)
,
cdr(X), X='((A B) C (D E))?
(C (D E))
, S-
SECD
" f(x)>0 1 0" Scheme
(IF (> (F X) 0) 1 0)
, , ,
, , x s.
(x,s) = null(s) #F eq(x,car(s)) (x,cdr(s))
λ- ( )
S K
cadr(x)
x
S-?
(X Y) (() (A B C)) ()
λ- ,
" g(x,y,z)>0 1 0" Scheme
(IF (> (G X Y Z) 0) 1 0)
" x>0 1 0" Scheme
(IF (> X 0) 1 0)
, s.
(s) ={ f(s, 0) f=λ(x,y) null(x) y f(cdr(x),y +1) }
λ-
I
I a → a
eq
,
Scheme , S- X ?
|
|
(NOT (PAIR? X))
, s, x.
(s,x) = null(s) 0 (cdr(s),x) +( eq(car(s),x) 1 0)
(X x Y → Z) x X → (Y → Z)
g(f,a)=λ(x) f(a,x)
,
Y
Y a → a (Y a)
('(1 2 3), (5)), (n) = λ(z) z+n?
(6 7 8)
,
cdr
:
(.. , )
Scheme , X Y ?
(NOT (= X Y))
, ,
, ,
LISP Haskell Scheme
" f(x,y)>0 1 0" Scheme
(IF (> (F X Y) 0) 1 0)