58 lines
807 B
Text
58 lines
807 B
Text
-- 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
|
|
C =
|
|
E = [x = call/cc k . suc k]
|
|
K = halt
|
|
}
|
|
|
|
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)
|
|
|
|
---
|
|
|
|
3 + (call/cc \k . abort (k 2))
|
|
|
|
abort : _|_ -> A
|
|
k : Nat -> _|_
|
|
k n = (yield 3 + n); exit
|
|
k 2 : _|_
|
|
abort (k 2) : A
|
|
\k . abort (k 2) : (Nat -> _|_) -> A
|
|
(call/cc \k . abort (k 2)) : Nat
|
|
|
|
---
|
|
|
|
cont (\n . 3 + n)
|
|
|
|
--
|
|
|
|
apply-kont (Kont String Nat) Nat
|
|
|
|
--
|
|
|