Można zinterpretować rachunek lambda w Haskell:interpretować PARIGOT jest lambda-MU rachunku w Haskell
data Expr = Var String | Lam String Expr | App Expr Expr
data Value a = V a | F (Value a -> Value a)
interpret :: [(String, Value a)] -> Expr -> Value a
interpret env (Var x) = case lookup x env of
Nothing -> error "undefined variable"
Just v -> v
interpret env (Lam x e) = F (\v -> interpret ((x, v):env) e)
interpret env (App e1 e2) = case interpret env e1 of
V _ -> error "not a function"
F f -> f (interpret env e2)
Jak można powyższe interpreter zostać rozszerzony na lambda-mu calculus? Domyślam się, że powinien on wykorzystywać kontynuacje do interpretacji dodatkowych konstrukcji w tym rachunku. (15) i (16) z Bernardi&Moortgat paper są tego rodzaju tłumaczeniami, jakich oczekuję.
Jest to możliwe, ponieważ Haskell to Turing-complete, ale w jaki sposób?
Podpowiedź: Zobacz komentarz na stronie 197 o this research paper dla intuicyjnego znaczenia segregatora mu.
Czy to jest zadanie domowe? Czego próbowałeś dla rachunku lambda-mu? – Cirdec
W artykule wikipedii i powiązanym artykule, co oznaczają nawiasy '[x]', gdy 'x' nie jest zmienną μ lub po nawiasie nie występuje termin bez nazwy? – Cirdec
Co oznacza "v/x", gdy "v" jest nienazwane, a "x" jest identyfikatorem? Co oznacza '/', gdy oba są nienazwane terminami? Kiedy oba są zmiennymi μ? – Cirdec