Was ist in Haskell der Unterschied zwischen "let x = 5" und "x = 5"?


Antwort 1:

x = 5 kann sein

  • Eine Deklaration der obersten Ebene Eine lokale Deklaration innerhalb eines let-Ausdrucks oder eines where-Blocks
x = 5 - Deklaration der obersten Ebene foo = - dummes Beispiel func, addiert 5 und dividiert durch 2, sei y = 2 x = 5 in (/ y). (+ x) foo = (/ y). (+ x) wobei y = 2 x = 5

sei x = 5 kann sein

  • der Beginn eines let-Ausdrucks (siehe oben) eine lokale Deklaration in einem Listenverständnis eine lokale Deklaration in einem Do-Notationsblock.

Was es nicht sein kann, ist eine Erklärung der obersten Ebene.

Neulinge in Haskell sind oft durch diesen letzten Punkt verwirrt, weil sie let x = 5 und nicht nur x = 5 eingeben müssen, wenn sie in der GHCi-Shell arbeiten. Dies liegt jedoch daran, dass GHCI jede eingegebene Zeile in ein implizites Let-In einschließt, sodass der Code, den Sie interaktiv in GHCi eingeben, zu einem langen verschachtelten Let-Ausdruck wird. Infolgedessen hat in CHCi eingegebener Code nicht genau das gleiche Format wie normaler Haskell-Code.