En Haskell, ¿cuándo lo usamos con let?
En el siguiente código, la última frase puedo poner unin
Al frente. ¿Cambiará algo?
Otra pregunta: si decido ponerin
delante de la última frase, ¿necesito sangrarla?
Lo intenté sin sangría y abrazos se queja
El último generador en do {...} debe ser una expresión
import Data.Char
groupsOf _ [] = []
groupsOf n xs =
take n xs : groupsOf n ( tail xs )
problem_8 x = maximum . map product . groupsOf 5 $ x
main = do t <- readFile "p8.log"
let digits = map digitToInt $concat $ lines t
print $ problem_8 digits
EditaOk, entonces la gente no parece entender lo que digo. Permítanme reformular: ¿son los dos siguientes iguales, dado el contexto anterior?
1.
let digits = map digitToInt $concat $ lines t
print $ problem_8 digits
2.
let digits = map digitToInt $concat $ lines t
in print $ problem_8 digits
Otra pregunta sobre el alcance de los enlaces declarados enlet
: Yo leoaqu ese
where
Cláusulas.
A veces es conveniente abarcar los enlaces sobre varias ecuaciones protegidas, lo que requiere una cláusula where:
f x y | y>z = ...
| y==z = ...
| y<z = ...
where z = x*x
enga en cuenta que esto no se puede hacer con una expresión let, que solo se extiende sobre la expresiónque encierra.
Mi pregunta: entonces, los dígitos variables no deberían ser visibles para la última frase impresa. ¿Echo de menos algo aquí?