|
|
|
|
|
|
37
|
(evalmanyo els env val))]
|
37
|
(evalmanyo els env val))]
|
|
38
|
[(fresh (x body)
|
38
|
[(fresh (x body)
|
|
39
|
(== `(lambda (,x) ,body) expr)
|
39
|
(== `(lambda (,x) ,body) expr)
|
|
40
|
(== `(closure ,x ,body ,env) val))]
|
|
|
|
|
|
40
|
(== `(,expr in ,env) val))]
|
|
41
|
[(fresh (e1 e2 x body env^ arg)
|
41
|
[(fresh (e1 e2 x body env^ arg)
|
|
42
|
(== `(,e1 ,e2) expr)
|
42
|
(== `(,e1 ,e2) expr)
|
|
43
|
(evalo e1 env `(closure ,x ,body ,env^))
|
|
|
|
|
|
43
|
(evalo e1 env `((lambda (,x) ,body) in ,env^))
|
|
44
|
(evalo e2 env arg)
|
44
|
(evalo e2 env arg)
|
|
45
|
(evalo body `((,x . ,arg) . ,env^) val))])))
|
45
|
(evalo body `((,x . ,arg) . ,env^) val))])))
|