haskell - usar - ¿Por qué se cuelga este código que utiliza sombreados de ''let`?
usar atributo alt en html (1)
De acuerdo con el informe Haskell, sección 3.12 :
Deje que las expresiones tengan la forma general let {d1; ...; dn} en e, e introduzca una lista de declaraciones anidada, de alcance léxico y mutuamente recursiva (let a menudo se llama letrec en otros idiomas) . El alcance de las declaraciones es la expresión ey el lado derecho de las declaraciones.
(énfasis mío)
Entonces, en el segundo let
, donde x = x * x
, todos los x
s se refieren a la misma unión, ninguno se refiere a la vinculación externa x = 4
.
Ejecutando este código:
j = let x = 4
in let x = x * x
in x
en el intérprete:
ghci> j
... no response ...
se cuelga con muy poca utilización de la CPU. ¿Por qué es esto? Esperaba j = 16
.