haskelwiki教程中的parsec错误

时间:2012-01-19 10:03:32

标签: haskell

我正在关注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)

1 个答案:

答案 0 :(得分:4)

该教程是很久以前编写的,当时parsec很简单。如今,从parsec-3开始,库可以包装monad,因此您现在必须指定(或以其他方式消除歧义)在某些点使用的类型。这是其中之一,例如eof表达式类型签名eof :: Parser ()使其编译。