@@ -16,24 +16,36 @@
1616module Data.Text.Fusion.Internal
1717 (
1818 M(..)
19+ , M8
1920 , PairS(..)
20− , Switch(..)
21+ , S(..)
2122 , Step(..)
2223 , Stream(..)
24+ , Switch(..)
2325 , empty
2426 ) where
2527
28+import Data.Word (Word8)
29+
2630-- | Specialised, strict Maybe-like type.
2731data M a = N
2832 | J {-# UNPACK #-} !a
2933 deriving (Eq, Ord, Show)
3034
35+type M8 = M Word8
36+
37+-- Restreaming state.
38+data S s = S {-# UNPACK #-} !s
39+ {-# UNPACK #-} !M8 {-# UNPACK #-} !M8 {-# UNPACK #-} !M8
40+ deriving (Eq, Ord, Show)
41+
3142infixl 2 :!:
3243data PairS a b = !a :!: !b
3344 deriving (Eq, Ord, Read, Show)
3445
3546-- | Allow a function over a stream to switch between two states.
3647data Switch = S1 | S2
48+ deriving (Eq, Ord, Show)
3749
3850data Step s a = Done
3951 | Skip !s