我正在尝试使用 uu-parsinglib[Word8]
而不是 [Char] 进行操作。(我想使用 uu-parsinglib 进行错误报告。)我需要一个解析器来获取Word8
序列中的下一个,无论它是什么。一旦有了它,我就可以构建更复杂的解析器。但是我很难弄清楚如何编写它。我能得到的最接近的是:
{-# LANGUAGE FlexibleContexts #-}
module Main where
import Control.Applicative ((<|>))
import Data.Word
import Text.ParserCombinators.UU.BasicInstances
pRawWord8 :: Parser Word8
pRawWord8 = pSatisfy (const True) (Insertion undefined undefined undefined)
但是,该实现显然返回了错误的类型。
amy2.hs:10:13:
Couldn't match type ‘Char’ with ‘Word8’
Expected type: Text.ParserCombinators.UU.Core.P
(Str Char state loc) Word8
Actual type: Text.ParserCombinators.UU.Core.P
(Str Char state loc) Char
In the expression:
pSatisfy (const True) (Insertion undefined undefined undefined)
In an equation for ‘pRawWord8’:
pRawWord8
= pSatisfy (const True) (Insertion undefined undefined undefined)
这让我感到惊讶,因为我看不到 for 的类型签名如何pSatisfy
限制我返回 aChar
而不是 a Word8
。
我该如何实施pRawWord8
?