-
Notifications
You must be signed in to change notification settings - Fork 2
/
draft2.txt
48 lines (36 loc) · 1.01 KB
/
draft2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
convert(expr, k)
c:
lambda(v): return_(c, k)
x:
lambda(v): return_(x, k)
(quote x)
lambda(v): return_(x, k)
begin(a, b):
convert(a, convert(b, k))
sample: begin(1, 2)
lambda v, fc, cc:
return_(1, (lambda v: return_(2, k)))
(if a b c)
convert(a, lambda(k) (lambda v: if_(v, convert(b, k), convert(b, k))(k)
sample: if(1, 2, 3)
lambda v:
1, lambda v: if v: lambda v: 2, k, else: lambda v: 3, k
(set a expr)
convert(expr, {lambda v: (a = v; (v, k))}
(proc args)
convert(proc, lambda p: convert_arguments(args, lambda v: p(k))
(proc)
lambda v:
proc, (lambda v: v(()), k)
(lambda (): body)()
lambda (k): convert(body, k)
lambda v, fc, cc: 1, k, fc, cc
function(((), body1), ((), body2))
lambda(solver)
lambda(solver):
old_fc = solver.fc
new_fc = lambda(k):
solver.fc = old_fc
convert(body2)
solver.fc = new_fc
convert(body1)