的玩具例子,但仍然令人沮喪:哈斯克爾拋出一個解析錯誤在一個陌生的地方
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 2012-04-10 08:13:29
你可以假裝分號和大括號已經存在,但是看不見。 (有自動括號和分號去的地方的規則。) – 2012-04-10 08:23:38