Un ejemplo de juguete, pero aún frustrante:Haskell lanza un error de análisis en un lugar extraño
numberMapper:: IO()
numberMapper = do codes <- forM [1 .. 4] (\num ->
do putStrLn $ "Enter a code for " ++ show num
code <- getLine
return code)
let numberCodes = zip [1 .. 4] codes
in forM numberCodes (\(num,code) ->
putStrLn $ "Got code " ++ show code ++ " for " ++ show num)
ghci
me dice que tengo un Parse error in pattern: putStrLn
y no puedo entender por qué debería dejar de analizar.
Ok, esto funciona si agrego llaves para los bloques do y los puntos y coma al final de cada 'declaración', pero ¿es esa la solución recomendada? (parece poco funcional: P) – agam
Puede fingir que los puntos y comas ya están allí, pero son invisibles. (Hay reglas para donde van las llaves automáticas y el punto y coma.) –