Я пытаюсь использовать uu-parsinglib для работы с [Word8]
, а не с [Char]. (Я хочу использовать uu-parsinglib для сообщения об ошибках.) Мне нужен синтаксический анализатор, который доставит мне следующий Word8
в последовательности, что бы это ни было. Как только у меня есть это, я могу построить более сложные парсеры. Но мне трудно понять, как его написать. Ближайший я был в состоянии получить это:Использование uu-parsinglib для разбора последовательности Word8s
{-# 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)
Это удивляет меня, потому что я не вижу, как тип подписи для pSatisfy
ограничивает меня возвращающая Char
вместо Word8
.
Как я могу реализовать pRawWord8
?
Спасибо, эти типы теперь имеют больше смысла! – mhwombat