csci8980-s22/src/Project/notes.txt

65 lines
840 B
Plaintext

-- 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)
---
(call/cc \k . k 3)
done 3
---
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
--