我正在关注http://www.haskell.org/haskellwiki/Hitchhikers_guide_to_Haskell中的代码,代码(在第2章中)给出了错误。教程中没有提到作者姓名/电子邮件,所以我来这里是为了提供建议。代码如下,错误发生在“eof”字样上。
module Main where
import Text.ParserCombinators.Parsec
parseInput =
do dirs <- many dirAndSize
eof
return dirs
data Dir = Dir Int String deriving Show
dirAndSize =
do size <- many1 digit
spaces
dir_name <- anyChar `manyTill` newline
return (Dir (read size) dir_name)
main = do
input <- getContents
putStrLn ("Debug: got inputs: " ++ input)
答案 0 :(得分:4)
该教程是很久以前编写的,当时parsec很简单。如今,从parsec-3开始,库可以包装monad,因此您现在必须指定(或以其他方式消除歧义)在某些点使用的类型。这是其中之一,例如eof
表达式类型签名eof :: Parser ()
使其编译。