A Haskell, quina diferència hi ha entre "let x = 5" i "x = 5"?


Resposta 1:

x = 5 pot ser

  • una declaració de primer nivell: una declaració local dins d'una expressió let o where block
x = 5 - Declaració de nivell superior foo = - exemple de ximpleria func, afegeix 5 llavors divs per 2 let y = 2 x = 5 en (/ y). (+ x) foo = (/ y). (+ x) on y = 2 x = 5

Sigui x = 5

  • el començament d’una expressió let (vegeu més amunt) una declaració local en una llista comprensiona una declaració local en un bloc de notació.

El que no pot ser és una declaració de primer nivell.

Els nouvinguts a Haskell se solen confondre per aquest darrer punt, perquè han d'escriure let x = 5 en lloc de x = 5 si treballen en el shell de GHCi. Però això és degut a que GHCI funciona embolicant cada línia mecanografiada de manera implícita perquè el codi que escriviu de manera interactiva en GHCi es converteixi en una expressió llarga nidificada. Com a resultat, el codi escrit a CHCi no segueix exactament el mateix format que el codi Haskell normal.