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)
War es hilfreich?

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
scroll top