2021-12-08 08:30:29 +00:00
|
|
|
-- Assume double is a language construct that doubles a number
|
|
|
|
|
|
|
|
State {
|
|
|
|
Tc = ?
|
|
|
|
Ctx = nil
|
|
|
|
C = double (call/cc k . suc k)
|
|
|
|
E = []
|
|
|
|
K = halt
|
|
|
|
}
|
|
|
|
|
|
|
|
State {
|
|
|
|
Tc = ?
|
|
|
|
Ctx = nil
|
2021-12-08 18:35:31 +00:00
|
|
|
C =
|
2021-12-08 08:30:29 +00:00
|
|
|
E = [x = call/cc k . suc k]
|
|
|
|
K = halt
|
2021-12-08 18:35:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
State {
|
|
|
|
Tc = ?
|
|
|
|
Ctx =
|
|
|
|
}
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
k : String -> N
|
|
|
|
left part : (String -> N) -> Bool
|
|
|
|
entire thing : (kont String -> N) -> Bool
|
|
|
|
|
|
|
|
|
|
|
|
call/cc : ((String -> N) -> Bool)
|
|
|
|
|
|
|
|
len (call/cc k . if k "hello" is even then true else false)
|
|
|
|
(k . if k "hello" is even then true else false) (\x . len x)
|
|
|
|
((\x . 3 + x) 2 + (\x . 3 + x) 4)
|