我有以下代码片段:
import Control.Applicative
import Data.Text
import Data.Attoparsec.Text
data GreetingYear = GreetingYear Text Int deriving Show
greetingYearParser :: Parser GreetingYear
greetingYearParser = GreetingYear <$> (string "hello" <|> string "bye")
<*> decimal
Run Code Online (Sandbox Code Playgroud)
当我使用它时,如下所示:
parse greetingYearParser "hello172"
Run Code Online (Sandbox Code Playgroud)
我有
Partial _
Run Code Online (Sandbox Code Playgroud)
为什么我没有收到:
Done "" (GreetingYear "hello" 172)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Attoparsec 构建增量解析器。该parse函数并不假设它已获得所有输入,而仅假定其已获得一部分。如果下一个输入块以 开头"32",则解析的 中将包含更多内容decimal。我认为您可能想要parseOnly而不是parse,这会额外假设它已获得完整的剩余输入。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |