Как получить доступ к Data.Functor.Of? - PullRequest
2 голосов
/ 14 мая 2019

Я пытаюсь использовать функцию length библиотеки streaming-bytestring Data.ByteString.Streaming.Char8.

Я вижу, что возвращаемое значение имеет тип Of, но мне не ясно, как его проверить. Я пытался использовать case, но компилятор говорит Not in scope: data constructor ‘O.Of’, даже если я делаю квалифицированный импорт Data.Functor.Of.

Как мне проверить значение?

Пример кода:

ghci> let bs = BSSC.string "tiger"            
ghci> bs                                                   
Chunk "tiger" (Empty (()))                                            
ghci> BSSC.length bs                 
6 :> ()                                  
ghci> let len = BSSC.length bs
ghci> :t len
len :: Monad m => m (OO.Of Int ())

1 Ответ

6 голосов
/ 14 мая 2019

Конструктор Of называется (:>):

-- | A left-strict pair; the base functor for streams of individual elements.
data Of a b = !a :> b
    deriving (Data, Eq, Foldable, Ord,
              Read, Show, Traversable, Typeable, Generic, Generic1)
infixr 5 :>

так что вы должны быть в состоянии сделать что-то вроде

n :> _ <- length bs
...