uso usar quiere que para emplea ejemplo decir atributo haskell scope let letrec

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 .