Un esempio giocattolo, ma ancora frustrante:Haskell getta un errore di analisi in un posto strano
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
mi dice che ho un Parse error in pattern: putStrLn
e io non riesco a capire il motivo per cui non dovesse analizzare.
Ok, questo funziona se aggiungo le parentesi graffe per i blocchi e il punto e virgola alla fine di ogni 'istruzione' - ma è quella la soluzione consigliata? (sembra un po 'non funzionale: P) – agam
Puoi fingere che il punto e virgola e le parentesi graffe siano già lì, ma invisibili. (Ci sono regole per dove vanno le parentesi graffe e il punto e virgola). –