- .. , .
, ,
. : P () Q (P Q ()
, P Q ).
, R L, L L1RL2.
, , , ,
.
. :
P - .
Q - .
:
()
, .
1) .
,
, .
2) , , .
.
.
xx y xx xyyyzzz
xy x y xy yyzzz
yzy x y xy yzzz
zz . z y xy zzz .
yy x yx zz z
yxzz
, . , :
a ba aa ba
a ba ba b
b b b b
b b b b
b b b
b b a a
b a a
a . a
a
LISP, 60- , , .
70-
.
21. .
k., │ -
~ -
- ( , )
:
k Se|~ S
k e ~
22. -. .
l-, , ,
. l-
, .
l- (, ) ,
.
l- .
- ( ).
: l-:
|
|
1. (1...). 1. - l-.
2. (1...). 2. - , - l-, l. l-.
3. .. 3. N l-, MN l-.
4. l.
5. =.
- M=N, M N l-.
.
.
f = lx.x + x
f - , .
l - .
- .
.-.
+ - , .
:
1. M = M.
2. (lx.M)N = M {N/x} b-. {N/x} N x .
[ b- , ,
(lx.f(x))(a) = f(a)]
3. lx.M = ly.M {y/x} a-.
{/x} x .
:
M = N; N = M.; M = N, N = P; M = P.; M = N; PM = PN. M = N; MP = NP.; M = N lx.M = lx.N.
b- ( )
(l. + 2)() = + 2, (l. + 2)() = + 2
(l.(l. + 2))()(b) = (l. + 2)(b) = a + 2b, (lx.((ly.xy)u))(lv.v) = (ly.(lv.v)y)u = (lv.v)u
(lx.((ly.xy)u))(lv.v) = (lx.xu)(lv.v) = (lv.v)u, (lx.xx) (lx.xx) = (lx.xx) (lx.xx) = (lx.xx) (lx.xx) =
((lx.x*3) (ly.if y > 4 then e = 2 else x/2) (ly.y>2)) (5) = 2*5 = 10
(ln.(lx.x-n))(2) = lx.x-2, (lf.2*f(8) f(f(8)))(half) = 2*8/2 (8/2)/2 = 6 (half ).
LISP
.
:
car(x) - ;
cdr() - ( );
cons(x,y) - ;
append(x,y) - y x;
.
x = (1, 2, 3) y = (4, 5)
car(x) = (1);
cdr() = (2, 3);
cons(x,y) = ((1, 2, 3), 4, 5);
append(x,y) = (1, 2, 3, 4, 5).
LISP ,
, .
.
() º if(x) = nil then 0 else (cdr(x)) + 1
.
(A, B, C) = (B, C) + 1
(B, C) = (C) + 1
(C) = (nil) + 1
(nil) = 0
"" .
, A, B, C C, B, A
(x, y) º if x = nil then y else (cdr(x), cons(car(x), y))
(A, B, C, nil) = ((B, C), (A))
((B, C), (A)) = ((C), (B, A))
((C), (B, A)) = ((nil), C, B, A)
"".
, .
.
,
. - .
, ,
|
|
() ().
,
.
(, ),
.
, .
/
, .
, .
:
= .
,
.
, .
,
,
.
,
,
() .
,
,
.
(/+)○(α*)○:<<1,2,3>>, <<4,5,6>>
/ -
○
(/+)○(α*)○: <<1,6>>, <<2,5>>, <<3,4>>
(/+):<<6,10,12>>
□:28
APL