Haskell haskelwiki教程中的parsec错误
我在中遵循代码,代码(第2章)给出了一个错误。教程中没有提到作者姓名/电子邮件,所以我来这里寻求建议。代码如下,错误发生在“eof”字上Haskell haskelwiki教程中的parsec错误,haskell,Haskell,我在中遵循代码,代码(第2章)给出了一个错误。教程中没有提到作者姓名/电子邮件,所以我来这里寻求建议。代码如下,错误发生在“eof”字上 modulemain其中 导入Text.ParserCombinators.Parsec 解析输入= dodirs那篇教程是很久以前写的,当时parsec很简单。现在,自从parsec-3以来,库可以包装monad,因此您现在必须指定(或消除歧义)在某些时候使用的类型。这是其中之一,给出了eof,例如表达式类型签名eof::Parser()使它可以编译。谢谢。
modulemain其中
导入Text.ParserCombinators.Parsec
解析输入=
dodirs那篇教程是很久以前写的,当时parsec很简单。现在,自从parsec-3以来,库可以包装monad,因此您现在必须指定(或消除歧义)在某些时候使用的类型。这是其中之一,给出了eof
,例如表达式类型签名eof::Parser()
使它可以编译。谢谢。另外,从Main调用parseInput设置上下文。在上面的示例中,代码正在生成,主代码来自以前的版本,不调用parseInput。当我修改下一节的主要代码段时,它起了作用。
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)