Haskell 秒差距错误

Haskell parsec error

在学习 parsec 教程时,我尝试了以下命令

  print (Parsec.parse (Parsec.many (Parsec.choice [Parsec.letter,Parsec.spaces ,(Parsec.char ','), Parsec.digit])) "" "hello1 , byebye2 ," )

并且控制台中的错误是

我不知道如何解决这个问题。如何解决这个问题,有什么想法吗??

来自 hackage

spaces :: Stream s m Char => ParsecT s u m ()
letter :: Stream s m Char => ParsecT s u m Char

所以你有解析器,它试图给你 Char 和一个,它只是丢弃输入并给你 ()。结果应该是什么?

你可以使用

space :: Stream s m Char => ParsecT s u m Char

(spaces *> return ' ')

而不仅仅是 spaces 取决于您想要的行为。