Konvertieren Python zu Haskell / Lambda-Kalkül
-
06-07-2019 - |
Frage
Was ist der Python-Code in Haskell und Lambda-Kalkül?
def f1():
x = 77
def f2():
print x
f2
f1
Mein Versuch in Lambda-Kalkül
\x. 77 (\x.x)
Lösung
Haskell:
f1 :: IO ()
f1 = let x = 77
f2 = print x
in f2
main :: IO ()
main = f1
oder mehr wie Ihr Lambda-Kalkül zu sein:
f1 :: Int
f1 = let f2 = x
x = 77
in f2
main :: IO ()
main = print f1
Andere Tipps
In Haskell:
f1 = f2
where x = 77
f2 = print x
Refactoring, da IO verwirrt nur die Frage:
f1 = f2
where x = 77
f2 = x
Refactoring:
f1 = x
where x = 77
Refactoring, da Sie die Variable wollen?
f1 = (\x -> x) 77
Beta reduzieren:
f1 = 77
Und Sie haben Ihr Programm in Haskell.
Lambda-Kalkül hat keine Zahlenliterale (im Gegensatz zu Haskell), so müssen wir Kirche Zahlen . So "77" zu Lambda-Kalkül Kompilieren:
f1 = \f.\x. f (f (f (f ( ... ) x)))
Und es ist Ihr Python-Programm in Lambda-Kalkül.
Ich weiß nicht, Python, so konnte ich völlig falsch sein, aber das ist meine Haskell Interpretation.
f1 = let x = 77 in show x
Oder, da Sie eine Konstante dort haben
f1 = show 77
In Lambda-Kalkül:
λprint. print 77
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow