Игрушечный пример, но по-прежнему разочаровывает:Haskell бросает синтаксическую ошибку в незнакомом месте
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
говорит мне, что есть Parse error in pattern: putStrLn
, и я не могу понять, почему он должен не разобрать.
Хорошо, это работает, если я добавлю фигурные скобки для блоков do и точек с запятой в конце каждого «заявления» - но является ли это рекомендуемым решением? (кажется немного неработоспособным: P) – agam
Вы можете притворяться, что точки с запятой и фигурные скобки уже есть, но невидимы. (Есть правила, по которым идут автоматические скобки и точки с запятой.) –