【发布时间】:2017-06-21 06:33:40
【问题描述】:
在学习 parsec 教程时,我尝试了以下命令
print (Parsec.parse (Parsec.many (Parsec.choice [Parsec.letter,Parsec.spaces ,(Parsec.char ','), Parsec.digit])) "" "hello1 , byebye2 ," )
我不确定如何解决这个问题。如何解决这个问题,有什么想法吗??
【问题讨论】:
在学习 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
所以你有解析器,它试图给你Chars 和一个,它只是丢弃输入并给你()。结果应该是什么?
你可以使用
space :: Stream s m Char => ParsecT s u m Char
或
(spaces *> return ' ')
而不仅仅是spaces 取决于您想要的行为。
【讨论】: