packages feed

hw-succinct 0.0.0.4 → 0.0.0.5

raw patch · 59 files changed

+391/−3477 lines, 59 filesdep +hw-bitsdep ~basedep ~criteriondep ~vectorPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: hw-bits

Dependency ranges changed: base, criterion, vector

API changes (from Hackage documentation)

- HaskellWorks.Data.Attoparsec.Final.IsChar.Char: class IsChar c
- HaskellWorks.Data.Attoparsec.Final.IsChar.Char: instance HaskellWorks.Data.Attoparsec.Final.IsChar.Internal.IsChar GHC.Types.Char
- HaskellWorks.Data.Attoparsec.Final.IsChar.Char: toChar :: IsChar c => c -> Char
- HaskellWorks.Data.Attoparsec.Final.IsChar.Internal: class IsChar c
- HaskellWorks.Data.Attoparsec.Final.IsChar.Internal: instance HaskellWorks.Data.Attoparsec.Final.IsChar.Internal.IsChar GHC.Word.Word8
- HaskellWorks.Data.Attoparsec.Final.IsChar.Internal: toChar :: IsChar c => c -> Char
- HaskellWorks.Data.Attoparsec.Final.Parser.ByteString: instance HaskellWorks.Data.Attoparsec.Final.Parser.Internal.Parser Data.ByteString.Internal.ByteString
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: (<?>) :: Parser t => Parser t Char -> String -> Parser t Char
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: char :: Parser t => Char -> Parser t Char
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: class MonoTraversable t => Parser t
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: rational :: (Parser t, Fractional f) => Parser t f
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: satisfy :: Parser t => (Element t -> Bool) -> Parser t (Element t)
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: satisfyChar :: Parser t => (Char -> Bool) -> Parser t Char
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: satisfyWith :: Parser t => (Element t -> a) -> (a -> Bool) -> Parser t a
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: string :: Parser t => t -> Parser t t
- HaskellWorks.Data.Attoparsec.Final.Parser.Internal: try :: Parser t => Parser t a -> Parser t a
- HaskellWorks.Data.Attoparsec.Final.Parser.Text: instance HaskellWorks.Data.Attoparsec.Final.Parser.Internal.Parser Data.Text.Internal.Text
- HaskellWorks.Data.Bits.BitLength: bitLength :: BitLength v => v -> Count
- HaskellWorks.Data.Bits.BitLength: class BitLength v where endPosition = Position . fromIntegral . getCount . bitLength
- HaskellWorks.Data.Bits.BitLength: elemBitEnd :: (VectorLike v, BitLength (Elem v)) => v -> Position
- HaskellWorks.Data.Bits.BitLength: elemBitLength :: (VectorLike v, BitLength (Elem v)) => v -> Count
- HaskellWorks.Data.Bits.BitLength: endPosition :: BitLength v => v -> Position
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength GHC.Types.Bool
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength GHC.Word.Word16
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength GHC.Word.Word32
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength GHC.Word.Word64
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength GHC.Word.Word8
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength [GHC.Types.Bool]
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength [GHC.Word.Word16]
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength [GHC.Word.Word32]
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength [GHC.Word.Word64]
- HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength [GHC.Word.Word8]
- HaskellWorks.Data.Bits.BitParse: bitParse0 :: BitParse a => Parser a
- HaskellWorks.Data.Bits.BitParse: bitParse1 :: BitParse a => Parser a
- HaskellWorks.Data.Bits.BitParse: class BitParse a
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse Data.ByteString.Internal.ByteString
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse GHC.Types.Bool
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse GHC.Word.Word16
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse GHC.Word.Word32
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse GHC.Word.Word64
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse GHC.Word.Word8
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse [GHC.Word.Word16]
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse [GHC.Word.Word32]
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse [GHC.Word.Word64]
- HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse [GHC.Word.Word8]
- HaskellWorks.Data.Bits.BitRead: bitRead :: BitRead a => String -> Maybe a
- HaskellWorks.Data.Bits.BitRead: class BitRead a
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead Data.ByteString.Internal.ByteString
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead GHC.Word.Word16
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead GHC.Word.Word32
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead GHC.Word.Word64
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead GHC.Word.Word8
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead [GHC.Types.Bool]
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead [GHC.Word.Word16]
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead [GHC.Word.Word32]
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead [GHC.Word.Word64]
- HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead [GHC.Word.Word8]
- HaskellWorks.Data.Bits.BitShow: bitShow :: BitShow a => a -> String
- HaskellWorks.Data.Bits.BitShow: bitShows :: BitShow a => a -> String -> String
- HaskellWorks.Data.Bits.BitShow: class BitShow a
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow Data.ByteString.Internal.ByteString
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow GHC.Types.Bool
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow GHC.Word.Word16
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow GHC.Word.Word32
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow GHC.Word.Word64
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow GHC.Word.Word8
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow [GHC.Types.Bool]
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow [GHC.Word.Word16]
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow [GHC.Word.Word32]
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow [GHC.Word.Word64]
- HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow [GHC.Word.Word8]
- HaskellWorks.Data.Bits.BitShown: BitShown :: a -> BitShown a
- HaskellWorks.Data.Bits.BitShown: bitShown :: BitShown a -> a
- HaskellWorks.Data.Bits.BitShown: instance GHC.Base.Functor HaskellWorks.Data.Bits.BitShown.BitShown
- HaskellWorks.Data.Bits.BitShown: instance GHC.Classes.Eq a => GHC.Classes.Eq (HaskellWorks.Data.Bits.BitShown.BitShown a)
- HaskellWorks.Data.Bits.BitShown: instance HaskellWorks.Data.Bits.BitRead.BitRead a => Data.String.IsString (HaskellWorks.Data.Bits.BitShown.BitShown a)
- HaskellWorks.Data.Bits.BitShown: instance HaskellWorks.Data.Bits.BitRead.BitRead a => HaskellWorks.Data.Bits.BitRead.BitRead (HaskellWorks.Data.Bits.BitShown.BitShown a)
- HaskellWorks.Data.Bits.BitShown: instance HaskellWorks.Data.Bits.BitShow.BitShow a => GHC.Show.Show (HaskellWorks.Data.Bits.BitShown.BitShown a)
- HaskellWorks.Data.Bits.BitShown: instance HaskellWorks.Data.Bits.BitShow.BitShow a => HaskellWorks.Data.Bits.BitShow.BitShow (HaskellWorks.Data.Bits.BitShown.BitShown a)
- HaskellWorks.Data.Bits.BitShown: instance HaskellWorks.Data.Bits.BitWise.TestBit a => HaskellWorks.Data.Bits.BitWise.TestBit (HaskellWorks.Data.Bits.BitShown.BitShown a)
- HaskellWorks.Data.Bits.BitShown: instance HaskellWorks.Data.FromByteString.FromByteString (HaskellWorks.Data.Bits.BitShown.BitShown [GHC.Types.Bool])
- HaskellWorks.Data.Bits.BitShown: newtype BitShown a
- HaskellWorks.Data.Bits.BitWise: (.&.) :: BitWise a => a -> a -> a
- HaskellWorks.Data.Bits.BitWise: (.<.) :: Shift a => a -> Count -> a
- HaskellWorks.Data.Bits.BitWise: (.>.) :: Shift a => a -> Count -> a
- HaskellWorks.Data.Bits.BitWise: (.?.) :: TestBit a => a -> Position -> Bool
- HaskellWorks.Data.Bits.BitWise: (.^.) :: BitWise a => a -> a -> a
- HaskellWorks.Data.Bits.BitWise: (.|.) :: BitWise a => a -> a -> a
- HaskellWorks.Data.Bits.BitWise: all0s :: BitWise a => a
- HaskellWorks.Data.Bits.BitWise: all1s :: BitWise a => a
- HaskellWorks.Data.Bits.BitWise: class BitWise a
- HaskellWorks.Data.Bits.BitWise: class Shift a
- HaskellWorks.Data.Bits.BitWise: class TestBit a
- HaskellWorks.Data.Bits.BitWise: comp :: BitWise a => a -> a
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.BitWise GHC.Word.Word16
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.BitWise GHC.Word.Word32
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.BitWise GHC.Word.Word64
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.BitWise GHC.Word.Word8
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.Shift GHC.Word.Word16
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.Shift GHC.Word.Word32
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.Shift GHC.Word.Word64
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.Shift GHC.Word.Word8
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit GHC.Types.Bool
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit GHC.Word.Word16
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit GHC.Word.Word32
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit GHC.Word.Word64
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit GHC.Word.Word8
- HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit [GHC.Types.Bool]
- HaskellWorks.Data.Bits.BitWise.String: bitsDiff :: AsBits a => a -> [Bool] -> [Bool]
- HaskellWorks.Data.Bits.BitWise.String: bitsShows :: AsBits a => a -> ShowS
- HaskellWorks.Data.Bits.BitWise.String: bitsToString :: AsBits a => a -> String
- HaskellWorks.Data.Bits.BitWise.String: class AsBits a
- HaskellWorks.Data.Bits.BitWise.String: class FromBits a
- HaskellWorks.Data.Bits.BitWise.String: fromBits1 :: FromBits a => [Bool] -> (Maybe a, [Bool])
- HaskellWorks.Data.Bits.BitWise.String: fromBitsDiff :: FromBits a => [Bool] -> ([a] -> [a], [Bool])
- HaskellWorks.Data.Bits.BitWise.String: fromBitsDiffN :: FromBits a => Int -> [Bool] -> ([a] -> [a], [Bool])
- HaskellWorks.Data.Bits.BitWise.String: instance HaskellWorks.Data.Bits.BitWise.String.AsBits GHC.Types.Bool
- HaskellWorks.Data.Bits.BitWise.String: instance HaskellWorks.Data.Bits.BitWise.String.AsBits GHC.Word.Word8
- HaskellWorks.Data.Bits.BitWise.String: instance HaskellWorks.Data.Bits.BitWise.String.AsBits a => HaskellWorks.Data.Bits.BitWise.String.AsBits [a]
- HaskellWorks.Data.Bits.BitWise.String: instance HaskellWorks.Data.Bits.BitWise.String.FromBits GHC.Types.Bool
- HaskellWorks.Data.Bits.BitWise.String: instance HaskellWorks.Data.Bits.BitWise.String.FromBits GHC.Word.Word16
- HaskellWorks.Data.Bits.BitWise.String: instance HaskellWorks.Data.Bits.BitWise.String.FromBits GHC.Word.Word8
- HaskellWorks.Data.Bits.BitWise.String: stringToBits :: String -> [Bool]
- HaskellWorks.Data.Bits.Conversion: bitsDiff :: AsBits a => a -> [Bool] -> [Bool]
- HaskellWorks.Data.Bits.Conversion: bitsShows :: AsBits a => a -> ShowS
- HaskellWorks.Data.Bits.Conversion: bitsToString :: AsBits a => a -> String
- HaskellWorks.Data.Bits.Conversion: class AsBits a
- HaskellWorks.Data.Bits.Conversion: class FromBits a
- HaskellWorks.Data.Bits.Conversion: fromBits1 :: FromBits a => [Bool] -> (Maybe a, [Bool])
- HaskellWorks.Data.Bits.Conversion: fromBitsDiff :: FromBits a => [Bool] -> ([a] -> [a], [Bool])
- HaskellWorks.Data.Bits.Conversion: fromBitsDiffN :: FromBits a => Int -> [Bool] -> ([a] -> [a], [Bool])
- HaskellWorks.Data.Bits.Conversion: instance HaskellWorks.Data.Bits.Conversion.AsBits GHC.Types.Bool
- HaskellWorks.Data.Bits.Conversion: instance HaskellWorks.Data.Bits.Conversion.AsBits GHC.Word.Word8
- HaskellWorks.Data.Bits.Conversion: instance HaskellWorks.Data.Bits.Conversion.AsBits a => HaskellWorks.Data.Bits.Conversion.AsBits [a]
- HaskellWorks.Data.Bits.Conversion: instance HaskellWorks.Data.Bits.Conversion.FromBits GHC.Types.Bool
- HaskellWorks.Data.Bits.Conversion: instance HaskellWorks.Data.Bits.Conversion.FromBits GHC.Word.Word16
- HaskellWorks.Data.Bits.Conversion: instance HaskellWorks.Data.Bits.Conversion.FromBits GHC.Word.Word8
- HaskellWorks.Data.Bits.Conversion: stringToBits :: String -> [Bool]
- HaskellWorks.Data.Bits.ElemFixedBitSize: class ElemFixedBitSize v where type family Elem v
- HaskellWorks.Data.Bits.ElemFixedBitSize: elemFixedBitSize :: ElemFixedBitSize v => v -> Count
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Storable.Vector GHC.Types.Bool)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Vector GHC.Types.Bool)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize [GHC.Types.Bool]
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize [GHC.Word.Word16]
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize [GHC.Word.Word32]
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize [GHC.Word.Word64]
- HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize [GHC.Word.Word8]
- HaskellWorks.Data.Bits.FixedBitSize: class FixedBitSize a
- HaskellWorks.Data.Bits.FixedBitSize: fixedBitSize :: FixedBitSize a => a -> Count
- HaskellWorks.Data.Bits.FixedBitSize: instance HaskellWorks.Data.Bits.FixedBitSize.FixedBitSize GHC.Types.Bool
- HaskellWorks.Data.Bits.FixedBitSize: instance HaskellWorks.Data.Bits.FixedBitSize.FixedBitSize GHC.Word.Word16
- HaskellWorks.Data.Bits.FixedBitSize: instance HaskellWorks.Data.Bits.FixedBitSize.FixedBitSize GHC.Word.Word32
- HaskellWorks.Data.Bits.FixedBitSize: instance HaskellWorks.Data.Bits.FixedBitSize.FixedBitSize GHC.Word.Word64
- HaskellWorks.Data.Bits.FixedBitSize: instance HaskellWorks.Data.Bits.FixedBitSize.FixedBitSize GHC.Word.Word8
- HaskellWorks.Data.Bits.FromBools: class FromBools a
- HaskellWorks.Data.Bits.FromBools: fromBools :: FromBools a => [Bool] -> Maybe (a, [Bool])
- HaskellWorks.Data.Bits.FromBools: instance HaskellWorks.Data.Bits.FromBools.FromBools GHC.Word.Word16
- HaskellWorks.Data.Bits.FromBools: instance HaskellWorks.Data.Bits.FromBools.FromBools GHC.Word.Word32
- HaskellWorks.Data.Bits.FromBools: instance HaskellWorks.Data.Bits.FromBools.FromBools GHC.Word.Word64
- HaskellWorks.Data.Bits.FromBools: instance HaskellWorks.Data.Bits.FromBools.FromBools GHC.Word.Word8
- HaskellWorks.Data.Bits.PopCount: class PopCount v e
- HaskellWorks.Data.Bits.PopCount: popCount :: PopCount v e => e -> v -> Count
- HaskellWorks.Data.Bits.PopCount.PopCount0: class PopCount0 v
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 GHC.Types.Bool
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 GHC.Word.Word16
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 GHC.Word.Word32
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 GHC.Word.Word64
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 GHC.Word.Word8
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 [GHC.Types.Bool]
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 [GHC.Word.Word16]
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 [GHC.Word.Word32]
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 [GHC.Word.Word64]
- HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 [GHC.Word.Word8]
- HaskellWorks.Data.Bits.PopCount.PopCount0: popCount0 :: PopCount0 v => v -> Count
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: class PopCount1 v
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 GHC.Types.Bool
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 GHC.Word.Word16
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 GHC.Word.Word32
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 GHC.Word.Word64
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 GHC.Word.Word8
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 [GHC.Types.Bool]
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 [GHC.Word.Word16]
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 [GHC.Word.Word32]
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 [GHC.Word.Word64]
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: instance HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword.PopCount1 [GHC.Word.Word8]
- HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword: popCount1 :: PopCount1 v => v -> Count
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: class PopCount1 v
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 GHC.Types.Bool
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 GHC.Word.Word16
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 GHC.Word.Word32
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 GHC.Word.Word64
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 GHC.Word.Word8
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 [GHC.Types.Bool]
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 [GHC.Word.Word16]
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 [GHC.Word.Word32]
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 [GHC.Word.Word64]
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: instance HaskellWorks.Data.Bits.PopCount.PopCount1.GHC.PopCount1 [GHC.Word.Word8]
- HaskellWorks.Data.Bits.PopCount.PopCount1.GHC: popCount1 :: PopCount1 v => v -> Count
- HaskellWorks.Data.ByteString: chunkedBy :: Int -> ByteString -> [ByteString]
- HaskellWorks.Data.Conduit.Json: jsonToken2BalancedParens :: Monad m => Conduit (ParseDelta Offset, JsonToken) m Bool
- HaskellWorks.Data.Conduit.Json: jsonToken2Markers :: Monad m => Conduit (ParseDelta Offset, JsonToken) m Int64
- HaskellWorks.Data.Conduit.Json: markerToByteString :: Monad m => Conduit Int64 m ByteString
- HaskellWorks.Data.Conduit.Json: textToJsonToken :: MonadThrow m => Conduit ByteString m (ParseDelta Offset, JsonToken)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: DivergentParser :: ParseError s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: ParseDelta :: !s -> !s -> ParseDelta s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: ParseError :: [String] -> String -> s -> ParseError s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: [after] :: ParseDelta s -> !s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: [before] :: ParseDelta s -> !s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: [errorContexts] :: ParseError s -> [String]
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: [errorMessage] :: ParseError s -> String
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: [errorPosition] :: ParseError s -> s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: class AttoparsecInput a
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: class AttoparsecState a s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: conduitParser :: (AttoparsecInput a, AttoparsecState a s, MonadThrow m, Exception (ParseError s)) => s -> Parser a b -> Conduit a m (ParseDelta s, b)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: conduitParserEither :: (Monad m, AttoparsecInput a, AttoparsecState a s) => s -> Parser a b -> Conduit a m (Either (ParseError s) (ParseDelta s, b))
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: data ParseDelta s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: data ParseError s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: empty :: AttoparsecInput a => a
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: feedA :: AttoparsecInput a => IResult a b -> a -> IResult a b
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: getState :: AttoparsecState a s => a -> s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: isNull :: AttoparsecInput a => a -> Bool
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: modState :: (AttoparsecState a s, AttoparsecInput a) => a -> s -> s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: notEmpty :: AttoparsecInput a => [a] -> [a]
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: parseA :: AttoparsecInput a => Parser a b -> a -> IResult a b
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: sinkParser :: (AttoparsecInput a, AttoparsecState a s, MonadThrow m, Exception (ParseError s)) => s -> Parser a b -> Consumer a m b
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: sinkParserEither :: (AttoparsecInput a, AttoparsecState a s, Monad m) => s -> Parser a b -> Consumer a m (Either (ParseError s) b)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec: stripFromEnd :: AttoparsecInput a => a -> a -> a
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: DivergentParser :: ParseError s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: ParseDelta :: !s -> !s -> ParseDelta s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: ParseError :: [String] -> String -> s -> ParseError s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: [after] :: ParseDelta s -> !s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: [before] :: ParseDelta s -> !s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: [errorContexts] :: ParseError s -> [String]
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: [errorMessage] :: ParseError s -> String
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: [errorPosition] :: ParseError s -> s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: class AttoparsecInput a
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: class AttoparsecState a s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: conduitParser :: (AttoparsecInput a, AttoparsecState a s, MonadThrow m, Exception (ParseError s)) => s -> Parser a b -> Conduit a m (ParseDelta s, b)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: conduitParserEither :: (Monad m, AttoparsecInput a, AttoparsecState a s) => s -> Parser a b -> Conduit a m (Either (ParseError s) (ParseDelta s, b))
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: data ParseDelta s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: data ParseError s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: empty :: AttoparsecInput a => a
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: feedA :: AttoparsecInput a => IResult a b -> a -> IResult a b
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: getState :: AttoparsecState a s => a -> s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: instance GHC.Classes.Eq s => GHC.Classes.Eq (HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.ParseDelta s)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: instance GHC.Classes.Ord s => GHC.Classes.Ord (HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.ParseDelta s)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: instance GHC.Show.Show s => GHC.Show.Show (HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.ParseError s)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: instance HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.AttoparsecInput Data.ByteString.Internal.ByteString
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: instance HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.AttoparsecInput Data.Text.Internal.Text
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: isNull :: AttoparsecInput a => a -> Bool
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: modState :: (AttoparsecState a s, AttoparsecInput a) => a -> s -> s
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: notEmpty :: AttoparsecInput a => [a] -> [a]
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: parseA :: AttoparsecInput a => Parser a b -> a -> IResult a b
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: sinkParser :: (AttoparsecInput a, AttoparsecState a s, MonadThrow m, Exception (ParseError s)) => s -> Parser a b -> Consumer a m b
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: sinkParserEither :: (AttoparsecInput a, AttoparsecState a s, Monad m) => s -> Parser a b -> Consumer a m (Either (ParseError s) b)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal: stripFromEnd :: AttoparsecInput a => a -> a -> a
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: Position :: {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> Position
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: [posCol] :: Position -> {-# UNPACK #-} !Int
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: [posLine] :: Position -> {-# UNPACK #-} !Int
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: data Position
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: instance GHC.Classes.Eq HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn.Position
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: instance GHC.Classes.Ord HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn.Position
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: instance GHC.Exception.Exception (HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.ParseError HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn.Position)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: instance GHC.Show.Show (HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.ParseDelta HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn.Position)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: instance GHC.Show.Show HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn.Position
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: instance HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.AttoparsecState Data.ByteString.Internal.ByteString HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn.Position
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn: instance HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.AttoparsecState Data.Text.Internal.Text HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn.Position
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: Offset :: {-# UNPACK #-} !Int64 -> Offset
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: [pos] :: Offset -> {-# UNPACK #-} !Int64
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: data Offset
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: instance GHC.Classes.Eq HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset.Offset
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: instance GHC.Classes.Ord HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset.Offset
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: instance GHC.Exception.Exception (HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.ParseError HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset.Offset)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: instance GHC.Show.Show (HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.ParseDelta HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset.Offset)
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: instance GHC.Show.Show HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset.Offset
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: instance HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.AttoparsecState Data.ByteString.Internal.ByteString HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset.Offset
- HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset: instance HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal.AttoparsecState Data.Text.Internal.Text HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset.Offset
- HaskellWorks.Data.FromByteString: class FromByteString a
- HaskellWorks.Data.FromByteString: fromByteString :: FromByteString a => ByteString -> a
- HaskellWorks.Data.FromForeignRegion: class FromForeignRegion a
- HaskellWorks.Data.FromForeignRegion: fromForeignRegion :: FromForeignRegion a => (ForeignPtr Word8, Int, Int) -> a
- HaskellWorks.Data.Json.Succinct.Transform: jsonToInterestBalancedParens :: [ByteString] -> [Bool]
- HaskellWorks.Data.Json.Succinct.Transform: jsonToInterestBits :: [ByteString] -> [Bool]
- HaskellWorks.Data.Positioning: Count :: Word64 -> Count
- HaskellWorks.Data.Positioning: Position :: Int64 -> Position
- HaskellWorks.Data.Positioning: [getCount] :: Count -> Word64
- HaskellWorks.Data.Positioning: [getPosition] :: Position -> Int64
- HaskellWorks.Data.Positioning: instance GHC.Classes.Eq HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: instance GHC.Classes.Eq HaskellWorks.Data.Positioning.Position
- HaskellWorks.Data.Positioning: instance GHC.Classes.Ord HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: instance GHC.Classes.Ord HaskellWorks.Data.Positioning.Position
- HaskellWorks.Data.Positioning: instance GHC.Enum.Enum HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: instance GHC.Enum.Enum HaskellWorks.Data.Positioning.Position
- HaskellWorks.Data.Positioning: instance GHC.Num.Num HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: instance GHC.Num.Num HaskellWorks.Data.Positioning.Position
- HaskellWorks.Data.Positioning: instance GHC.Real.Integral HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: instance GHC.Real.Integral HaskellWorks.Data.Positioning.Position
- HaskellWorks.Data.Positioning: instance GHC.Real.Real HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: instance GHC.Real.Real HaskellWorks.Data.Positioning.Position
- HaskellWorks.Data.Positioning: instance GHC.Show.Show HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: instance GHC.Show.Show HaskellWorks.Data.Positioning.Position
- HaskellWorks.Data.Positioning: instance System.Random.Random HaskellWorks.Data.Positioning.Count
- HaskellWorks.Data.Positioning: lastPositionOf :: Count -> Position
- HaskellWorks.Data.Positioning: newtype Count
- HaskellWorks.Data.Positioning: newtype Position
- HaskellWorks.Data.Positioning: toCount :: Position -> Count
- HaskellWorks.Data.Positioning: toPosition :: Count -> Position
- HaskellWorks.Data.Search: binarySearch :: (Ord a, Integral n) => a -> (n -> a) -> n -> n -> n
- HaskellWorks.Data.Vector.BoxedVectorLike: bImap :: BoxedVectorLike v e => (Int -> a -> b) -> v a -> v b
- HaskellWorks.Data.Vector.BoxedVectorLike: bMap :: BoxedVectorLike v e => (a -> b) -> v a -> v b
- HaskellWorks.Data.Vector.BoxedVectorLike: bUnfoldr :: (BoxedVectorLike v e, Storable a) => (b -> Maybe (a, b)) -> b -> v a
- HaskellWorks.Data.Vector.BoxedVectorLike: bUnfoldrN :: (BoxedVectorLike v e, Storable a) => Int -> (b -> Maybe (a, b)) -> b -> v a
- HaskellWorks.Data.Vector.BoxedVectorLike: class BoxedVectorLike v e
- HaskellWorks.Data.Vector.BoxedVectorLike: instance HaskellWorks.Data.Vector.BoxedVectorLike.BoxedVectorLike Data.Vector.Vector GHC.Word.Word16
- HaskellWorks.Data.Vector.BoxedVectorLike: instance HaskellWorks.Data.Vector.BoxedVectorLike.BoxedVectorLike Data.Vector.Vector GHC.Word.Word32
- HaskellWorks.Data.Vector.BoxedVectorLike: instance HaskellWorks.Data.Vector.BoxedVectorLike.BoxedVectorLike Data.Vector.Vector GHC.Word.Word64
- HaskellWorks.Data.Vector.BoxedVectorLike: instance HaskellWorks.Data.Vector.BoxedVectorLike.BoxedVectorLike Data.Vector.Vector GHC.Word.Word8
- HaskellWorks.Data.Vector.Storable.ByteString: byteStringToVector :: (Storable a) => ByteString -> Vector a
- HaskellWorks.Data.Vector.Storable.ByteString: vectorToByteString :: (Storable a) => Vector a -> ByteString
- HaskellWorks.Data.Vector.StorableVectorLike: class StorableVectorLike v e
- HaskellWorks.Data.Vector.StorableVectorLike: instance HaskellWorks.Data.Vector.StorableVectorLike.StorableVectorLike Data.Vector.Storable.Vector GHC.Word.Word16
- HaskellWorks.Data.Vector.StorableVectorLike: instance HaskellWorks.Data.Vector.StorableVectorLike.StorableVectorLike Data.Vector.Storable.Vector GHC.Word.Word32
- HaskellWorks.Data.Vector.StorableVectorLike: instance HaskellWorks.Data.Vector.StorableVectorLike.StorableVectorLike Data.Vector.Storable.Vector GHC.Word.Word64
- HaskellWorks.Data.Vector.StorableVectorLike: instance HaskellWorks.Data.Vector.StorableVectorLike.StorableVectorLike Data.Vector.Storable.Vector GHC.Word.Word8
- HaskellWorks.Data.Vector.StorableVectorLike: sImap :: (StorableVectorLike v e, Storable a, Storable b) => (Int -> a -> b) -> v a -> v b
- HaskellWorks.Data.Vector.StorableVectorLike: sMap :: (StorableVectorLike v e, Storable a, Storable b) => (a -> b) -> v a -> v b
- HaskellWorks.Data.Vector.StorableVectorLike: sUnfoldr :: (StorableVectorLike v e, Storable a) => (b -> Maybe (a, b)) -> b -> v a
- HaskellWorks.Data.Vector.StorableVectorLike: sUnfoldrN :: (StorableVectorLike v e, Storable a) => Int -> (b -> Maybe (a, b)) -> b -> v a
- HaskellWorks.Data.Vector.VectorLike: (!!!) :: VectorLike v => v -> Position -> Elem v
- HaskellWorks.Data.Vector.VectorLike: class VectorLike v where type family Elem v
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Storable.Vector GHC.Word.Word16)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Storable.Vector GHC.Word.Word32)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Storable.Vector GHC.Word.Word64)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Storable.Vector GHC.Word.Word8)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Vector GHC.Word.Word16)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Vector GHC.Word.Word32)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Vector GHC.Word.Word64)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike (Data.Vector.Vector GHC.Word.Word8)
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike Data.ByteString.Internal.ByteString
- HaskellWorks.Data.Vector.VectorLike: instance HaskellWorks.Data.Vector.VectorLike.VectorLike GHC.Base.String
- HaskellWorks.Data.Vector.VectorLike: vConcat :: VectorLike v => [v] -> v
- HaskellWorks.Data.Vector.VectorLike: vDrop :: VectorLike v => Count -> v -> v
- HaskellWorks.Data.Vector.VectorLike: vEmpty :: VectorLike v => v
- HaskellWorks.Data.Vector.VectorLike: vFilter :: VectorLike v => (Elem v -> Bool) -> v -> v
- HaskellWorks.Data.Vector.VectorLike: vFromList :: VectorLike v => [Elem v] -> v
- HaskellWorks.Data.Vector.VectorLike: vGenerate :: VectorLike v => Int -> (Int -> Elem v) -> v
- HaskellWorks.Data.Vector.VectorLike: vIndex :: VectorLike v => v -> Position -> Elem v
- HaskellWorks.Data.Vector.VectorLike: vLength :: VectorLike v => v -> Count
- HaskellWorks.Data.Vector.VectorLike: vSlice :: VectorLike v => Position -> Position -> v -> v
- HaskellWorks.Data.Vector.VectorLike: vSnoc :: VectorLike v => v -> Elem v -> v
- HaskellWorks.Data.Vector.VectorLike: vTake :: VectorLike v => Count -> v -> v
- HaskellWorks.Data.Vector.VectorLike: vToList :: VectorLike v => v -> [Elem v]
- HaskellWorks.Data.Word: class WordConcat a where type family DoubleWords a
- HaskellWorks.Data.Word: class WordSplit a where type family HalfWords a
- HaskellWorks.Data.Word: instance HaskellWorks.Data.Word.WordConcat GHC.Word.Word16
- HaskellWorks.Data.Word: instance HaskellWorks.Data.Word.WordConcat GHC.Word.Word32
- HaskellWorks.Data.Word: instance HaskellWorks.Data.Word.WordConcat GHC.Word.Word8
- HaskellWorks.Data.Word: instance HaskellWorks.Data.Word.WordSplit GHC.Word.Word16
- HaskellWorks.Data.Word: instance HaskellWorks.Data.Word.WordSplit GHC.Word.Word32
- HaskellWorks.Data.Word: instance HaskellWorks.Data.Word.WordSplit GHC.Word.Word64
- HaskellWorks.Data.Word: leConcat :: WordConcat a => a -> a -> DoubleWords a
- HaskellWorks.Data.Word: leSplit :: WordSplit a => a -> (HalfWords a, HalfWords a)
- HaskellWorks.Function: applyN :: (a -> a) -> Int -> a -> a
+ HaskellWorks.Data.Attoparsec.Final.IsChar: class IsChar c
+ HaskellWorks.Data.Attoparsec.Final.IsChar: instance HaskellWorks.Data.Attoparsec.Final.IsChar.IsChar GHC.Types.Char
+ HaskellWorks.Data.Attoparsec.Final.IsChar: instance HaskellWorks.Data.Attoparsec.Final.IsChar.IsChar GHC.Word.Word8
+ HaskellWorks.Data.Attoparsec.Final.IsChar: toChar :: IsChar c => c -> Char
+ HaskellWorks.Data.Attoparsec.Final.Parser: instance HaskellWorks.Data.Attoparsec.Final.Parser.Parser Data.ByteString.Internal.ByteString
+ HaskellWorks.Data.Attoparsec.Final.Parser: instance HaskellWorks.Data.Attoparsec.Final.Parser.Parser Data.Text.Internal.Text
+ HaskellWorks.Data.Conduit.ByteString: rechunk :: Monad m => Int -> Conduit ByteString m ByteString
+ HaskellWorks.Data.Conduit.Json: blankedJsonToBalancedParens2 :: Monad m => Conduit ByteString m ByteString
+ HaskellWorks.Data.Conduit.Json: compressWordAsBit :: Monad m => Conduit ByteString m ByteString
+ HaskellWorks.Data.Conduit.Json.Words: w00 :: Word8
+ HaskellWorks.Data.Conduit.Json.Words: wFF :: Word8
+ HaskellWorks.Data.Json.Succinct.Cursor.BalancedParens: instance HaskellWorks.Data.Json.Succinct.Cursor.BlankedJson.FromBlankedJson (HaskellWorks.Data.Json.Succinct.Cursor.BalancedParens.JsonBalancedParens (HaskellWorks.Data.Succinct.BalancedParens.Simple.SimpleBalancedParens [GHC.Types.Bool]))
+ HaskellWorks.Data.Json.Succinct.Cursor.InterestBits: instance HaskellWorks.Data.Json.Succinct.Cursor.BlankedJson.FromBlankedJson (HaskellWorks.Data.Json.Succinct.Cursor.InterestBits.JsonInterestBits (HaskellWorks.Data.Bits.BitShown.BitShown [GHC.Types.Bool]))

Files

app/Main.hs view
@@ -12,12 +12,39 @@ import           HaskellWorks.Data.Json.Succinct.Cursor import           HaskellWorks.Data.Succinct.BalancedParens.Simple import           HaskellWorks.Diagnostics.Time+import           System.Mem +readJson :: String -> IO (JsonCursor BS.ByteString (BitShown (DVS.Vector Word64)) (SimpleBalancedParens (DVS.Vector Word64)))+readJson path = do+  bs <- BS.readFile path+  print "Read file"+  !cursor <- measure (fromByteString bs :: JsonCursor BS.ByteString (BitShown (DVS.Vector Word64)) (SimpleBalancedParens (DVS.Vector Word64)))+  print "Created cursor"+  return cursor+ main :: IO () main = do-  bs <- BS.readFile "/Users/jky/Downloads/78mbs.json"-  !cursor <- measure (fromByteString bs :: JsonCursor BS.ByteString (BitShown (DVS.Vector Word64)) (SimpleBalancedParens (DVS.Vector Word64)))-  print (jsonTokenAt (firstChild cursor))+  performGC+  !c0 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c1 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c2 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c3 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c4 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c5 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c6 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c7 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c8 <- readJson "/Users/jky/Downloads/78mbs.json"+  !c9 <- readJson "/Users/jky/Downloads/78mbs.json"+  print "Returned from readJson"+  performGC   threadDelay 100000000-  print (jsonTokenAt cursor)-  return ()+  print c0+  print c1+  print c2+  print c3+  print c4+  print c5+  print c6+  print c7+  print c8+  print c9
bench/Main.hs view
@@ -13,8 +13,7 @@ import           Data.Word import           Foreign import           HaskellWorks.Data.Bits.BitShown-import qualified HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword as PC1BW-import qualified HaskellWorks.Data.Bits.PopCount.PopCount1.GHC       as PC1GHC+import           HaskellWorks.Data.Conduit.ByteString import           HaskellWorks.Data.Conduit.Json import           HaskellWorks.Data.Conduit.Json.Blank import           HaskellWorks.Data.Conduit.List@@ -25,12 +24,18 @@ import           HaskellWorks.Data.Succinct.RankSelect.Binary.Basic import           System.IO.MMap -v :: DVS.Vector Word64-v = DVS.fromList (take 1000000 (cycle [maxBound, 0]))+setupEnvBs :: Int -> IO BS.ByteString+setupEnvBs n = return $ BS.pack (take n (cycle [maxBound, 0])) -setupEnv :: IO (DVS.Vector Word64)-setupEnv = return v+setupEnvBss :: Int -> Int -> IO [BS.ByteString]+setupEnvBss n k = setupEnvBs n >>= \v -> return (replicate k v) +setupEnvVector :: Int -> IO (DVS.Vector Word64)+setupEnvVector n = return $ DVS.fromList (take n (cycle [maxBound, 0]))++setupEnvVectors :: Int -> Int -> IO [DVS.Vector Word64]+setupEnvVectors n k = setupEnvVector n >>= \v -> return (replicate k v)+ setupEnvJson :: FilePath -> IO BS.ByteString setupEnvJson filepath = do   (fptr :: ForeignPtr Word8, offset, size) <- mmapFileForeignPtr filepath ReadOnly Nothing@@ -43,23 +48,21 @@ runCon :: Conduit i [] BS.ByteString -> i -> BS.ByteString runCon con bs = BS.concat $ runListConduit con [bs] -jsonToInterestBits3 :: MonadThrow m => Conduit BS.ByteString m BS.ByteString-jsonToInterestBits3 = blankJson =$= blankedJsonToInterestBits+runCon2 :: Conduit i [] o -> [i] -> [o]+runCon2 con is = let os = runListConduit con is in seq (length os) os -jsonToInterestBitsOld :: MonadThrow m => Conduit BS.ByteString m BS.ByteString-jsonToInterestBitsOld = textToJsonToken =$= jsonToken2Markers =$= markerToByteString+runCon3 :: Conduit i [] BS.ByteString -> [i] -> [BS.ByteString]+runCon3 con is = let os = runListConduit con is in seq (BS.length (last os)) os -runBlankedJsonToInterestBits :: BS.ByteString -> BS.ByteString-runBlankedJsonToInterestBits bs = BS.concat $ runListConduit blankedJsonToInterestBits [bs]+jsonToInterestBits3 :: MonadThrow m => Conduit BS.ByteString m BS.ByteString+jsonToInterestBits3 = blankJson =$= blankedJsonToInterestBits  benchRankSelect :: [Benchmark] benchRankSelect =-  [ env setupEnv $ \bv -> bgroup "Rank"+  [ env (setupEnvVector 1000000) $ \bv -> bgroup "Rank"     [ bench "Rank - Once"   (whnf (rank1    bv) 1)     , bench "Select - Once" (whnf (select1  bv) 1)     , bench "Rank - Many"   (nf   (map (getCount . rank1  bv)) [0, 1000..10000000])-    , bench "PopCnt1 Broadword - Once" (nf   (map (\n -> getCount (PC1BW.popCount1  (DVS.take n bv)))) [0, 1000..10000000])-    , bench "PopCnt1 GHC       - Once" (nf   (map (\n -> getCount (PC1GHC.popCount1 (DVS.take n bv)))) [0, 1000..10000000])     ]   ] @@ -68,7 +71,6 @@   [ env (setupEnvJson "/Users/jky/Downloads/part40.json") $ \bs -> bgroup "Json40"     [ bench "Run blankJson                    "  (whnf (runCon blankJson                  ) bs)     , bench "Run jsonToInterestBits3          "  (whnf (runCon jsonToInterestBits3        ) bs)-    , bench "Run jsonToInterestBitsOld        "  (whnf (runCon jsonToInterestBitsOld      ) bs)     , bench "loadJson                         "  (whnf  loadJson                            bs)     ]   ]@@ -84,6 +86,22 @@ benchRankJsonBigConduits =   [ env (setupEnvJson "/Users/jky/Downloads/78mb.json") $ \bs -> bgroup "JsonBig"     [ bench "loadJson" (whnf loadJson bs)+    ]+  ]++benchBlankedJsonToBalancedParens :: [Benchmark]+benchBlankedJsonToBalancedParens =+  [ env (setupEnvJson "/Users/jky/Downloads/part40.json") $ \bs -> bgroup "JsonBig"+    [ bench "blankedJsonToBalancedParens2" (whnf (runCon2 blankedJsonToBalancedParens) [bs])+    , bench "blankedJsonToBalancedParens2" (whnf (runCon3 blankedJsonToBalancedParens2) [bs])+    , bench "blankedJsonToBalancedParens2" (whnf (runCon3 (blankedJsonToBalancedParens2 =$= rechunk 4060)) [bs])+    ]+  ]++benchRechunk :: [Benchmark]+benchRechunk =+  [ env (setupEnvBss 4060 19968) $ \bss -> bgroup "Rank"+    [ bench "Rechunk"   (whnf (runListConduit (rechunk 1000)) bss)     ]   ] 
hw-succinct.cabal view
@@ -1,5 +1,5 @@ name:                   hw-succinct-version:                0.0.0.4+version:                0.0.0.5 synopsis:               Conduits for tokenizing streams. description:            Please see README.md homepage:               http://github.com/haskell-works/hw-succinct#readme@@ -18,53 +18,26 @@   hs-source-dirs:       app   main-is:              Main.hs   ghc-options:          -threaded -rtsopts -with-rtsopts=-N -O2 -Wall -msse4.2-  build-depends:        base            >= 4       && < 5   ,-                        bytestring                          ,-                        conduit                             ,-                        criterion       >= 1.1.0.0 && < 1.2 ,-                        hw-succinct                         ,-                        mmap                                ,-                        resourcet                           ,-                        vector          >= 0.6     && < 0.12+  build-depends:        base            >= 4+                      , bytestring+                      , conduit+                      , criterion+                      , hw-bits+                      , hw-succinct+                      , mmap+                      , resourcet+                      , vector   default-language:     Haskell2010  library   hs-source-dirs:       src   exposed-modules:      HaskellWorks.Data.Attoparsec.Final.IsChar-                      , HaskellWorks.Data.Attoparsec.Final.IsChar.Char-                      , HaskellWorks.Data.Attoparsec.Final.IsChar.Internal                       , HaskellWorks.Data.Attoparsec.Final.Parser-                      , HaskellWorks.Data.Attoparsec.Final.Parser.ByteString-                      , HaskellWorks.Data.Attoparsec.Final.Parser.Internal-                      , HaskellWorks.Data.Attoparsec.Final.Parser.Text-                      , HaskellWorks.Data.Bits-                      , HaskellWorks.Data.Bits.BitLength-                      , HaskellWorks.Data.Bits.BitParse-                      , HaskellWorks.Data.Bits.BitRead-                      , HaskellWorks.Data.Bits.BitShow-                      , HaskellWorks.Data.Bits.BitShown-                      , HaskellWorks.Data.Bits.BitWise-                      , HaskellWorks.Data.Bits.BitWise.String-                      , HaskellWorks.Data.Bits.Conversion-                      , HaskellWorks.Data.Bits.ElemFixedBitSize-                      , HaskellWorks.Data.Bits.FixedBitSize-                      , HaskellWorks.Data.Bits.FromBools-                      , HaskellWorks.Data.Bits.PopCount-                      , HaskellWorks.Data.Bits.PopCount.PopCount0-                      , HaskellWorks.Data.Bits.PopCount.PopCount1-                      , HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword-                      , HaskellWorks.Data.Bits.PopCount.PopCount1.GHC-                      , HaskellWorks.Data.ByteString+                      , HaskellWorks.Data.Conduit.ByteString                       , HaskellWorks.Data.Conduit.Json                       , HaskellWorks.Data.Conduit.Json.Blank                       , HaskellWorks.Data.Conduit.Json.Words                       , HaskellWorks.Data.Conduit.List-                      , HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal-                      , HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn-                      , HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset-                      , HaskellWorks.Data.Conduit.Tokenize.Attoparsec-                      , HaskellWorks.Data.FromByteString-                      , HaskellWorks.Data.FromForeignRegion                       , HaskellWorks.Data.Json.Final.Tokenize                       , HaskellWorks.Data.Json.Final.Tokenize.Internal                       , HaskellWorks.Data.Json.Succinct@@ -74,10 +47,7 @@                       , HaskellWorks.Data.Json.Succinct.Cursor.CursorType                       , HaskellWorks.Data.Json.Succinct.Cursor.InterestBits                       , HaskellWorks.Data.Json.Succinct.Cursor.Internal-                      , HaskellWorks.Data.Json.Succinct.Transform                       , HaskellWorks.Data.Json.Token-                      , HaskellWorks.Data.Positioning-                      , HaskellWorks.Data.Search                       , HaskellWorks.Data.Succinct                       , HaskellWorks.Data.Succinct.BalancedParens                       , HaskellWorks.Data.Succinct.BalancedParens.Internal@@ -92,12 +62,6 @@                       , HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1                       , HaskellWorks.Data.Succinct.RankSelect.Binary.Poppy512                       , HaskellWorks.Data.Succinct.RankSelect.Internal-                      , HaskellWorks.Data.Vector.BoxedVectorLike-                      , HaskellWorks.Data.Vector.Storable.ByteString-                      , HaskellWorks.Data.Vector.StorableVectorLike-                      , HaskellWorks.Data.Vector.VectorLike-                      , HaskellWorks.Data.Word-                      , HaskellWorks.Function                       , HaskellWorks.Diagnostics.Time   build-depends:        base                            >= 4.7  && < 5                       , array@@ -106,6 +70,7 @@                       , conduit                         >= 1.1  && < 1.3                       , deepseq                         <  1.5                       , ghc-prim+                      , hw-bits                       , lens                       , mmap                       , mono-traversable@@ -127,28 +92,26 @@   main-is:              Spec.hs   other-modules:        HaskellWorks.Data.Bits.BitReadSpec                       , HaskellWorks.Data.Bits.BitWiseSpec-                      , HaskellWorks.Data.Bits.FromBoolsSpec+                      , HaskellWorks.Data.Conduit.ByteStringSpec                       , HaskellWorks.Data.Conduit.Json.BlankSpec-                      , HaskellWorks.Data.Conduit.JsonSpec-                      , HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumnSpec-                      , HaskellWorks.Data.Conduit.Tokenize.Attoparsec.OffsetSpec                       , HaskellWorks.Data.Json.Final.TokenizeSpec                       , HaskellWorks.Data.Json.Succinct.CursorSpec-                      , HaskellWorks.Data.Json.SuccinctSpec+                      , HaskellWorks.Data.Json.Succinct.Cursor.InterestBitsSpec                       , HaskellWorks.Data.Succinct.BalancedParensSpec-                      , HaskellWorks.Data.Succinct.RankSelect.InternalSpec                       , HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0Spec                       , HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1Spec                       , HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select0Spec                       , HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1Spec                       , HaskellWorks.Data.Succinct.RankSelect.Binary.BasicGen                       , HaskellWorks.Data.Succinct.RankSelect.Binary.Poppy512Spec+                      , HaskellWorks.Data.Succinct.RankSelect.InternalSpec                       , HaskellWorks.Data.Succinct.SimpleSpec   build-depends:        base                       , attoparsec                      >= 0.10                       , bytestring                       , conduit                         >= 1.1  && < 1.3                       , hspec                           >= 1.3+                      , hw-bits                       , hw-succinct                       , mmap                       , parsec@@ -169,13 +132,12 @@     Main-Is: Main.hs     GHC-Options: -O2 -Wall -msse4.2     Default-Language: Haskell2010-    Build-Depends:-        base            >= 4       && < 5   ,-        bytestring                          ,-        conduit                             ,-        criterion       >= 1.1.0.0 && < 1.2 ,-        hw-succinct                         ,-        mmap                                ,-        resourcet                           ,-        vector          >= 0.6     && < 0.12-+    Build-Depends:      base            >= 4       && < 5+                      , bytestring+                      , conduit+                      , criterion+                      , hw-bits+                      , hw-succinct+                      , mmap+                      , resourcet+                      , vector
src/HaskellWorks/Data/Attoparsec/Final/IsChar.hs view
@@ -1,6 +1,17 @@ module HaskellWorks.Data.Attoparsec.Final.IsChar-    ( module X+    ( IsChar(..)     ) where -import           HaskellWorks.Data.Attoparsec.Final.IsChar.Char     as X ()-import           HaskellWorks.Data.Attoparsec.Final.IsChar.Internal as X+import qualified Data.ByteString.Internal as BI+import           Data.Word8++class IsChar c where+  toChar :: c -> Char++instance IsChar Word8 where+  toChar = BI.w2c+  {-# INLINABLE toChar #-}++instance IsChar Char where+  toChar = id+  {-# INLINABLE toChar #-}
− src/HaskellWorks/Data/Attoparsec/Final/IsChar/Char.hs
@@ -1,8 +0,0 @@-module HaskellWorks.Data.Attoparsec.Final.IsChar.Char-    ( IsChar(..)-    ) where--import HaskellWorks.Data.Attoparsec.Final.IsChar.Internal--instance IsChar Char where-  toChar = id
− src/HaskellWorks/Data/Attoparsec/Final/IsChar/Internal.hs
@@ -1,12 +0,0 @@-module HaskellWorks.Data.Attoparsec.Final.IsChar.Internal-    ( IsChar(..)-    ) where--import qualified Data.ByteString.Internal as BI-import           Data.Word8--class IsChar c where-  toChar :: c -> Char--instance IsChar Word8 where-  toChar = BI.w2c
src/HaskellWorks/Data/Attoparsec/Final/Parser.hs view
@@ -1,5 +1,58 @@ module HaskellWorks.Data.Attoparsec.Final.Parser-    ( Parser(..)-    ) where+  ( Parser(..)+  ) where -import HaskellWorks.Data.Attoparsec.Final.Parser.Internal+import qualified Data.Attoparsec.ByteString                as ABS+import qualified Data.Attoparsec.ByteString.Char8          as BC+import qualified Data.Attoparsec.Text                      as AT+import qualified Data.Attoparsec.Types                     as T+import           Data.ByteString                           (ByteString)+import           Data.MonoTraversable+import           Data.Text                                 (Text)+import           HaskellWorks.Data.Attoparsec.Final.IsChar++class MonoTraversable t => Parser t where+  satisfy :: (Element t -> Bool) -> T.Parser t (Element t)+  satisfyWith :: (Element t -> a) -> (a -> Bool) -> T.Parser t a+  satisfyChar :: (Char -> Bool) -> T.Parser t Char+  string :: t -> T.Parser t t+  try :: T.Parser t a -> T.Parser t a+  char :: Char -> T.Parser t Char+  (<?>) :: T.Parser t Char -> String -> T.Parser t Char+  rational :: Fractional f => T.Parser t f++instance Parser ByteString where+  satisfy = ABS.satisfy+  satisfyWith = ABS.satisfyWith+  satisfyChar = ABS.satisfyWith toChar+  string = ABS.string+  try = ABS.try+  char = BC.char+  (<?>) = (BC.<?>)+  rational = BC.rational+  {-# INLINABLE satisfy     #-}+  {-# INLINABLE satisfyWith #-}+  {-# INLINABLE satisfyChar #-}+  {-# INLINABLE string      #-}+  {-# INLINABLE try         #-}+  {-# INLINABLE char        #-}+  {-# INLINABLE (<?>)       #-}+  {-# INLINABLE rational    #-}++instance Parser Text where+  satisfy = AT.satisfy+  satisfyWith = AT.satisfyWith+  satisfyChar = AT.satisfyWith toChar+  string = AT.string+  try = AT.try+  char = AT.char+  (<?>) = (AT.<?>)+  rational = AT.rational+  {-# INLINABLE satisfy     #-}+  {-# INLINABLE satisfyWith #-}+  {-# INLINABLE satisfyChar #-}+  {-# INLINABLE string      #-}+  {-# INLINABLE try         #-}+  {-# INLINABLE char        #-}+  {-# INLINABLE (<?>)       #-}+  {-# INLINABLE rational    #-}
− src/HaskellWorks/Data/Attoparsec/Final/Parser/ByteString.hs
@@ -1,17 +0,0 @@-module HaskellWorks.Data.Attoparsec.Final.Parser.ByteString where--import qualified Data.Attoparsec.ByteString                         as ABS-import qualified Data.Attoparsec.ByteString.Char8                   as BC-import           Data.ByteString                                    (ByteString)-import           HaskellWorks.Data.Attoparsec.Final.IsChar-import           HaskellWorks.Data.Attoparsec.Final.Parser.Internal--instance Parser ByteString where-  satisfy = ABS.satisfy-  satisfyWith = ABS.satisfyWith-  satisfyChar = ABS.satisfyWith toChar-  string = ABS.string-  try = ABS.try-  char = BC.char-  (<?>) = (BC.<?>)-  rational = BC.rational
− src/HaskellWorks/Data/Attoparsec/Final/Parser/Internal.hs
@@ -1,16 +0,0 @@-module HaskellWorks.Data.Attoparsec.Final.Parser.Internal-    ( Parser(..)-    ) where--import qualified Data.Attoparsec.Types              as T-import           Data.MonoTraversable--class MonoTraversable t => Parser t where-  satisfy :: (Element t -> Bool) -> T.Parser t (Element t)-  satisfyWith :: (Element t -> a) -> (a -> Bool) -> T.Parser t a-  satisfyChar :: (Char -> Bool) -> T.Parser t Char-  string :: t -> T.Parser t t-  try :: T.Parser t a -> T.Parser t a-  char :: Char -> T.Parser t Char-  (<?>) :: T.Parser t Char -> String -> T.Parser t Char-  rational :: Fractional f => T.Parser t f
− src/HaskellWorks/Data/Attoparsec/Final/Parser/Text.hs
@@ -1,16 +0,0 @@-module HaskellWorks.Data.Attoparsec.Final.Parser.Text where--import qualified Data.Attoparsec.Text                               as AT-import           Data.Text                                          (Text)-import           HaskellWorks.Data.Attoparsec.Final.IsChar-import           HaskellWorks.Data.Attoparsec.Final.Parser.Internal--instance Parser Text where-  satisfy = AT.satisfy-  satisfyWith = AT.satisfyWith-  satisfyChar = AT.satisfyWith toChar-  string = AT.string-  try = AT.try-  char = AT.char-  (<?>) = (AT.<?>)-  rational = AT.rational
− src/HaskellWorks/Data/Bits.hs
@@ -1,16 +0,0 @@--- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits-    ( module X-    ) where--import           HaskellWorks.Data.Bits.BitLength as X-import           HaskellWorks.Data.Bits.BitParse  as X-import           HaskellWorks.Data.Bits.BitRead   as X-import           HaskellWorks.Data.Bits.BitShow   as X-import           HaskellWorks.Data.Bits.BitShown  as X-import           HaskellWorks.Data.Bits.BitWise   as X-import           HaskellWorks.Data.Bits.PopCount  as X
− src/HaskellWorks/Data/Bits/BitLength.hs
@@ -1,112 +0,0 @@-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.BitLength-    ( -- * Bit map-      BitLength(..)-    , elemBitLength-    , elemBitEnd-    ) where--import qualified Data.Vector                         as DV-import qualified Data.Vector.Storable                as DVS-import           Data.Word-import           HaskellWorks.Data.Positioning-import           HaskellWorks.Data.Vector.VectorLike-import           Prelude                             as P--class BitLength v where-  bitLength :: v -> Count--  endPosition :: v -> Position-  endPosition = Position . fromIntegral . getCount . bitLength------------------------------------------------------------------------------------- Functions--elemBitLength :: (VectorLike v, BitLength (Elem v)) => v -> Count-elemBitLength v = bitLength (v !!! 0)--elemBitEnd :: (VectorLike v, BitLength (Elem v)) => v -> Position-elemBitEnd v = endPosition (v !!! 0)------------------------------------------------------------------------------------- Instances--instance BitLength Bool where-  bitLength _ = 1-  {-# INLINABLE bitLength #-}--instance BitLength [Bool] where-  bitLength = fromIntegral . P.length-  {-# INLINABLE bitLength #-}--instance BitLength Word8 where-  bitLength _ = 8-  {-# INLINABLE bitLength #-}--instance BitLength Word16 where-  bitLength _ = 16-  {-# INLINABLE bitLength #-}--instance BitLength Word32 where-  bitLength _ = 32-  {-# INLINABLE bitLength #-}--instance BitLength Word64 where-  bitLength _ = 64-  {-# INLINABLE bitLength #-}--instance BitLength [Word8] where-  bitLength v = fromIntegral (P.length v) * bitLength (head v)-  {-# INLINABLE bitLength #-}--instance BitLength [Word16] where-  bitLength v = fromIntegral (P.length v) * bitLength (head v)-  {-# INLINABLE bitLength #-}--instance BitLength [Word32] where-  bitLength v = fromIntegral (P.length v) * bitLength (head v)-  {-# INLINABLE bitLength #-}--instance BitLength [Word64] where-  bitLength v = fromIntegral (P.length v) * bitLength (head v)-  {-# INLINABLE bitLength #-}--instance BitLength (DV.Vector Word8) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}--instance BitLength (DV.Vector Word16) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}--instance BitLength (DV.Vector Word32) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}--instance BitLength (DV.Vector Word64) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}--instance BitLength (DVS.Vector Word8) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}--instance BitLength (DVS.Vector Word16) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}--instance BitLength (DVS.Vector Word32) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}--instance BitLength (DVS.Vector Word64) where-  bitLength v = vLength v * bitLength (v !!! 0)-  {-# INLINABLE bitLength #-}
− src/HaskellWorks/Data/Bits/BitParse.hs
@@ -1,127 +0,0 @@-{-# LANGUAGE FlexibleInstances   #-}-{-# LANGUAGE ScopedTypeVariables #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.BitParse-  ( BitParse(..)-  ) where--import qualified Data.ByteString                  as BS-import qualified Data.Vector                      as DV-import qualified Data.Vector.Storable             as DVS-import           Data.Word-import           HaskellWorks.Data.Bits.BitLength-import           HaskellWorks.Data.Bits.BitWise-import           Text.ParserCombinators.Parsec--class BitParse a where-  bitParse0       :: Parser a-  bitParse1       :: Parser a--p0 :: Parser Bool-p0 = char '1' >> return True--p1 :: Parser Bool-p1 = char '0' >> return False--instance BitParse Bool where-  bitParse0 = option False bitParse1-  bitParse1 = p0 <|> p1--instance BitParse Word8 where-  bitParse0 = option 0 bitParse1-  bitParse1 = do-    a :: Bool <- bitParse1-    b :: Bool <- bitParse0-    c :: Bool <- bitParse0-    d :: Bool <- bitParse0-    e :: Bool <- bitParse0-    f :: Bool <- bitParse0-    g :: Bool <- bitParse0-    h :: Bool <- bitParse0-    return $-      (if a then 0x01 else 0) .|.-      (if b then 0x02 else 0) .|.-      (if c then 0x04 else 0) .|.-      (if d then 0x08 else 0) .|.-      (if e then 0x10 else 0) .|.-      (if f then 0x20 else 0) .|.-      (if g then 0x40 else 0) .|.-      (if h then 0x80 else 0)--instance BitParse Word16 where-  bitParse0 = option 0 bitParse1-  bitParse1 = do-    (a :: Word8) <- bitParse1-    (b :: Word8) <- bitParse0-    return $ (fromIntegral b .<. bitLength a) .|. fromIntegral a--instance BitParse Word32 where-  bitParse0 = option 0 bitParse1-  bitParse1 = do-    (a :: Word16) <- bitParse1-    (b :: Word16) <- bitParse0-    return $ (fromIntegral b .<. bitLength a) .|. fromIntegral a--instance BitParse Word64 where-  bitParse0 = option 0 bitParse1-  bitParse1 = do-    (a :: Word32) <- bitParse1-    (b :: Word32) <- bitParse0-    return $ (fromIntegral b .<. bitLength a) .|. fromIntegral a--instance BitParse BS.ByteString where-  bitParse0 = fmap BS.pack bitParse0-  bitParse1 = fmap BS.pack bitParse1--instance BitParse [Word8] where-  bitParse0 = option [] bitParse1-  bitParse1 = many bitParse1--instance BitParse [Word16] where-  bitParse0 = option [] bitParse1-  bitParse1 = many bitParse1--instance BitParse [Word32] where-  bitParse0 = option [] bitParse1-  bitParse1 = many bitParse1--instance BitParse [Word64] where-  bitParse0 = option [] bitParse1-  bitParse1 = many bitParse1--instance BitParse (DV.Vector Word8) where-  bitParse0 = option DV.empty bitParse1-  bitParse1 = DV.fromList `fmap` bitParse0--instance BitParse (DV.Vector Word16) where-  bitParse0 = option DV.empty bitParse1-  bitParse1 = DV.fromList `fmap` bitParse0--instance BitParse (DV.Vector Word32) where-  bitParse0 = option DV.empty bitParse1-  bitParse1 = DV.fromList `fmap` bitParse0--instance BitParse (DV.Vector Word64) where-  bitParse0 = option DV.empty bitParse1-  bitParse1 = DV.fromList `fmap` bitParse0--instance BitParse (DVS.Vector Word8) where-  bitParse0 = option DVS.empty bitParse1-  bitParse1 = DVS.fromList `fmap` bitParse0--instance BitParse (DVS.Vector Word16) where-  bitParse0 = option DVS.empty bitParse1-  bitParse1 = DVS.fromList `fmap` bitParse0--instance BitParse (DVS.Vector Word32) where-  bitParse0 = option DVS.empty bitParse1-  bitParse1 = DVS.fromList `fmap` bitParse0--instance BitParse (DVS.Vector Word64) where-  bitParse0 = option DVS.empty bitParse1-  bitParse1 = DVS.fromList `fmap` bitParse0
− src/HaskellWorks/Data/Bits/BitRead.hs
@@ -1,78 +0,0 @@-{-# LANGUAGE FlexibleInstances    #-}-{-# LANGUAGE UndecidableInstances #-}--module HaskellWorks.Data.Bits.BitRead-  ( BitRead(..)-  ) where--import qualified Data.ByteString                 as BS-import qualified Data.Vector                     as DV-import qualified Data.Vector.Storable            as DVS-import           Data.Word-import           HaskellWorks.Data.Bits.BitParse-import           Text.ParserCombinators.Parsec--class BitRead a where-  bitRead :: String -> Maybe a--bitRead' :: BitParse a => String -> Maybe a-bitRead' = either (const Nothing) Just . parse bitParse0 "" . filter (/= ' ')--bitCharToBool :: Char -> Maybe Bool-bitCharToBool '1' = Just True-bitCharToBool '0' = Just False-bitCharToBool _   = Nothing--instance BitRead Word8 where-  bitRead = bitRead'--instance BitRead Word16 where-  bitRead = bitRead'--instance BitRead Word32 where-  bitRead = bitRead'--instance BitRead Word64 where-  bitRead = bitRead'--instance BitRead BS.ByteString where-  bitRead = bitRead'--instance BitRead [Word8] where-  bitRead = bitRead'--instance BitRead [Word16] where-  bitRead = bitRead'--instance BitRead [Word32] where-  bitRead = bitRead'--instance BitRead [Word64] where-  bitRead = bitRead'--instance BitRead (DV.Vector Word8) where-  bitRead = bitRead'--instance BitRead (DV.Vector Word16) where-  bitRead = bitRead'--instance BitRead (DV.Vector Word32) where-  bitRead = bitRead'--instance BitRead (DV.Vector Word64) where-  bitRead = bitRead'--instance BitRead (DVS.Vector Word8) where-  bitRead = bitRead'--instance BitRead (DVS.Vector Word16) where-  bitRead = bitRead'--instance BitRead (DVS.Vector Word32) where-  bitRead = bitRead'--instance BitRead (DVS.Vector Word64) where-  bitRead = bitRead'--instance BitRead [Bool] where-  bitRead = sequence . fmap bitCharToBool . filter (/= ' ')
− src/HaskellWorks/Data/Bits/BitShow.hs
@@ -1,104 +0,0 @@-{-# LANGUAGE FlexibleInstances   #-}-{-# LANGUAGE ScopedTypeVariables #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.BitShow-  ( BitShow(..)-  , bitShow-  ) where--import qualified Data.ByteString                as BS-import qualified Data.Vector                    as DV-import qualified Data.Vector.Storable           as DVS-import           Data.Word-import           HaskellWorks.Data.Bits.BitWise-import           HaskellWorks.Data.Word--class BitShow a where-  bitShows :: a -> String -> String--instance BitShow Bool where-  bitShows a = ((if a then '1' else '0'):)--instance BitShow Word8 where-  bitShows w =-      (if w .?. 0 then ('1':) else ('0':))-    . (if w .?. 1 then ('1':) else ('0':))-    . (if w .?. 2 then ('1':) else ('0':))-    . (if w .?. 3 then ('1':) else ('0':))-    . (if w .?. 4 then ('1':) else ('0':))-    . (if w .?. 5 then ('1':) else ('0':))-    . (if w .?. 6 then ('1':) else ('0':))-    . (if w .?. 7 then ('1':) else ('0':))--instance BitShow Word16 where-  bitShows w = case leSplit w of (a, b) -> bitShows a . (' ':) . bitShows b--instance BitShow Word32 where-  bitShows w = case leSplit w of (a, b) -> bitShows a . (' ':) . bitShows b--instance BitShow Word64 where-  bitShows w = case leSplit w of (a, b) -> bitShows a . (' ':) . bitShows b--instance BitShow [Bool] where-  bitShows ws = ('\"':) . go (0 :: Int) ws . ('\"':)-    where go _ []     = id-          go _ [u]    = bitShows u-          go n (u:us) = bitShows u . maybePrependSeperatorat n . go (n + 1) us-          maybePrependSeperatorat n = if n `mod` 8 == 7 then (' ':) else id--instance BitShow BS.ByteString where-  bitShows bs | BS.length bs == 0 = id-  bitShows bs | BS.length bs == 1 = bitShows (BS.head bs)-  bitShows bs                     = bitShows (BS.head bs) . (' ':) . bitShows (BS.tail bs)--instance BitShow [Word8] where-  bitShows []     = id-  bitShows [w]    = bitShows w-  bitShows (w:ws) = bitShows w . (' ':) . bitShows ws--instance BitShow [Word16] where-  bitShows []     = id-  bitShows [w]    = bitShows w-  bitShows (w:ws) = bitShows w . (' ':) . bitShows ws--instance BitShow [Word32] where-  bitShows []     = id-  bitShows [w]    = bitShows w-  bitShows (w:ws) = bitShows w . (' ':) . bitShows ws--instance BitShow [Word64] where-  bitShows []     = id-  bitShows [w]    = bitShows w-  bitShows (w:ws) = bitShows w . (' ':) . bitShows ws--instance BitShow (DV.Vector Word8) where-  bitShows = bitShows . DV.toList--instance BitShow (DV.Vector Word16) where-  bitShows = bitShows . DV.toList--instance BitShow (DV.Vector Word32) where-  bitShows = bitShows . DV.toList--instance BitShow (DV.Vector Word64) where-  bitShows = bitShows . DV.toList--instance BitShow (DVS.Vector Word8) where-  bitShows = bitShows . DVS.toList--instance BitShow (DVS.Vector Word16) where-  bitShows = bitShows . DVS.toList--instance BitShow (DVS.Vector Word32) where-  bitShows = bitShows . DVS.toList--instance BitShow (DVS.Vector Word64) where-  bitShows = bitShows . DVS.toList--bitShow :: BitShow a => a -> String-bitShow a = bitShows a ""
− src/HaskellWorks/Data/Bits/BitShown.hs
@@ -1,46 +0,0 @@-{-# LANGUAGE DeriveFunctor              #-}-{-# LANGUAGE FlexibleInstances          #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE StandaloneDeriving         #-}--module HaskellWorks.Data.Bits.BitShown-  ( BitShown(..)-  , bitShown-  ) where--import qualified Data.ByteString                  as BS-import           Data.Maybe-import           Data.String-import           Data.Word-import           HaskellWorks.Data.Bits.BitRead-import           HaskellWorks.Data.Bits.BitShow-import           HaskellWorks.Data.Bits.BitWise-import           HaskellWorks.Data.FromByteString--newtype BitShown a = BitShown a deriving (Eq, BitRead, BitShow)--deriving instance Functor BitShown--instance BitRead a => IsString (BitShown a) where-  fromString = fromJust . bitRead--instance BitShow a => Show (BitShown a) where-  show a = bitShows a ""--bitShown :: BitShown a -> a-bitShown (BitShown a) = a--deriving instance TestBit a => TestBit (BitShown a)--instance FromByteString (BitShown [Bool]) where-  fromByteString = BitShown . BS.foldr gen []-    where gen :: Word8 -> [Bool] -> [Bool]-          gen w bs =-            (w .&. 0x01 /= 0) :-            (w .&. 0x02 /= 0) :-            (w .&. 0x04 /= 0) :-            (w .&. 0x08 /= 0) :-            (w .&. 0x10 /= 0) :-            (w .&. 0x20 /= 0) :-            (w .&. 0x40 /= 0) :-            (w .&. 0x80 /= 0) : bs
− src/HaskellWorks/Data/Bits/BitWise.hs
@@ -1,213 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies          #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.BitWise-    ( -- * Bit map-      BitWise(..)-    , Shift(..)-    , TestBit(..)-    ) where--import qualified Data.Bits                           as B-import qualified Data.Vector                         as DV-import qualified Data.Vector.Storable                as DVS-import           Data.Word-import           HaskellWorks.Data.Bits.BitLength-import           HaskellWorks.Data.Positioning-import           HaskellWorks.Data.Vector.VectorLike as VL-import           Prelude                             as P---- We pervasively use precedence to avoid excessive parentheses, and we use--- the same precedence conventions of the C programming language: arithmetic--- operators come first, ordered in the standard way, followed by shifts,--- followed by logical operators; ⊕ sits between | and &.-infixl 9 .?.-infixl 8 .<., .>.-infixl 7 .&.        -- Bitwise AND.  eg. ∧-infixl 6 .^.        -- Bitwise XOR.  eg. ⊕-infixl 5 .|.        -- Bitwise OR.   eg. ∨--class Shift a where-  (.<.) :: a -> Count -> a-  (.>.) :: a -> Count -> a--class TestBit a where-  (.?.) :: a -> Position -> Bool--class BitWise a where-  (.&.) :: a -> a -> a-  (.|.) :: a -> a -> a-  (.^.) :: a -> a -> a-  comp  :: a -> a-  all0s :: a-  all1s :: a------------------------------------------------------------------------------------- Instances--instance TestBit Bool where-  (.?.) w 0 = w-  (.?.) _ _ = error "Invalid bit index"-  {-# INLINABLE (.?.) #-}--instance TestBit [Bool] where-  (.?.) v p = v !! fromIntegral p-  {-# INLINABLE (.?.) #-}--instance TestBit Word8 where-  (.?.) w n = B.testBit w (fromIntegral (getPosition n))-  {-# INLINABLE (.?.) #-}--instance TestBit Word16 where-  (.?.) w n = B.testBit w (fromIntegral (getPosition n))-  {-# INLINABLE (.?.) #-}--instance TestBit Word32 where-  (.?.) w n = B.testBit w (fromIntegral (getPosition n))-  {-# INLINABLE (.?.) #-}--instance TestBit Word64 where-  (.?.) w n = B.testBit w (fromIntegral (getPosition n))-  {-# INLINABLE (.?.) #-}--instance TestBit (DV.Vector Word8) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance TestBit (DV.Vector Word16) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance TestBit (DV.Vector Word32) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance TestBit (DV.Vector Word64) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance TestBit (DVS.Vector Word8) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance TestBit (DVS.Vector Word16) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance TestBit (DVS.Vector Word32) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance TestBit (DVS.Vector Word64) where-  (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r-  {-# INLINABLE (.?.) #-}--instance BitWise Word8 where-  (.&.) = (B..&.)-  {-# INLINABLE (.&.) #-}--  (.|.) = (B..|.)-  {-# INLINABLE (.|.) #-}--  (.^.) = B.xor-  {-# INLINABLE (.^.) #-}--  comp  = B.complement-  {-# INLINABLE comp #-}--  all0s = 0-  {-# INLINABLE all0s #-}--  all1s = 0-  {-# INLINABLE all1s #-}--instance BitWise Word16 where-  (.&.) = (B..&.)-  {-# INLINABLE (.&.) #-}--  (.|.) = (B..|.)-  {-# INLINABLE (.|.) #-}--  (.^.) = B.xor-  {-# INLINABLE (.^.) #-}--  comp  = B.complement-  {-# INLINABLE comp #-}--  all0s = 0-  {-# INLINABLE all0s #-}--  all1s = 0-  {-# INLINABLE all1s #-}--instance BitWise Word32 where-  (.&.) = (B..&.)-  {-# INLINABLE (.&.) #-}--  (.|.) = (B..|.)-  {-# INLINABLE (.|.) #-}--  (.^.) = B.xor-  {-# INLINABLE (.^.) #-}--  comp  = B.complement-  {-# INLINABLE comp #-}--  all0s = 0-  {-# INLINABLE all0s #-}--  all1s = 0-  {-# INLINABLE all1s #-}--instance BitWise Word64 where-  (.&.) = (B..&.)-  {-# INLINABLE (.&.) #-}--  (.|.) = (B..|.)-  {-# INLINABLE (.|.) #-}--  (.^.) = B.xor-  {-# INLINABLE (.^.) #-}--  comp  = B.complement-  {-# INLINABLE comp #-}--  all0s = 0-  {-# INLINABLE all0s #-}--  all1s = 0-  {-# INLINABLE all1s #-}--instance Shift Word8  where-  (.<.) w n = B.shiftL w (fromIntegral n)-  {-# INLINABLE (.<.) #-}--  (.>.) w n = B.shiftR w (fromIntegral n)-  {-# INLINABLE (.>.) #-}--instance Shift Word16 where-  (.<.) w n = B.shiftL w (fromIntegral n)-  {-# INLINABLE (.<.) #-}--  (.>.) w n = B.shiftR w (fromIntegral n)-  {-# INLINABLE (.>.) #-}--instance Shift Word32 where-  (.<.) w n = B.shiftL w (fromIntegral n)-  {-# INLINABLE (.<.) #-}--  (.>.) w n = B.shiftR w (fromIntegral n)-  {-# INLINABLE (.>.) #-}--instance Shift Word64 where-  (.<.) w n = B.shiftL w (fromIntegral n)-  {-# INLINABLE (.<.) #-}--  (.>.) w n = B.shiftR w (fromIntegral n)-  {-# INLINABLE (.>.) #-}
− src/HaskellWorks/Data/Bits/BitWise/String.hs
@@ -1,126 +0,0 @@-{-# LANGUAGE FlexibleInstances    #-}-{-# LANGUAGE UndecidableInstances #-}--module HaskellWorks.Data.Bits.BitWise.String-  ( AsBits(..)-  , FromBits(..)-  , bitsToString-  , bitsShows-  , fromBitsDiff-  , fromBitsDiffN-  , stringToBits-  ) where--import Data.Bits-import Data.Word--bitsDiff' :: FiniteBits a => a -> Int -> Int -> [Bool] -> [Bool]-bitsDiff' a n len bs-  | n < len   = testBit a n : bitsDiff' a (n + 1) len bs-  | n == len  = bs-  | otherwise = error "Invalid index"--bits :: AsBits a => a -> [Bool]-bits a = bitsDiff a []--bitsShows' :: [Bool] -> ShowS-bitsShows' [] s = s-bitsShows' (True :bs) s = '1':bitsShows' bs s-bitsShows' (False:bs) s = '0':bitsShows' bs s--bitsShows :: AsBits a => a -> ShowS-bitsShows = bitsShows' . bits--bitsToString :: AsBits a => a -> String-bitsToString bs = bitsShows bs ""---- unbits :: AsBits a => [Bool] -> (a, [Bool])--- unbits a =  _uu----- bitsUnshows :: AsBits a => String -> (a, String)--- bitsUnshows = bitsShows' . bits------ stringToBits :: AsBits a => String -> (a, String)--- stringToBits as = _u--class AsBits a where-  bitsDiff :: a -> [Bool] -> [Bool]--class FromBits a where-  fromBits1 :: [Bool] -> (Maybe a, [Bool])------------------------------------------------------------------------------------instance AsBits Bool where-  bitsDiff = (:)--instance AsBits Word8 where-  bitsDiff a = bitsDiff' a 0 (finiteBitSize a)--instance AsBits a => AsBits [a] where-  bitsDiff [] = id-  bitsDiff (x:xs) = bitsDiff x . bitsDiff xs--instance FromBits Bool where-  fromBits1 [] = (Nothing, [])-  fromBits1 (b:bs) = (Just b, bs)--instance FromBits Word8 where-  fromBits1 (a:b:c:d:e:f:g:h:bs) = (,)-    (Just $ if a then 0x01 else 0 .|.-            if b then 0x02 else 0 .|.-            if c then 0x04 else 0 .|.-            if d then 0x08 else 0 .|.-            if e then 0x10 else 0 .|.-            if f then 0x20 else 0 .|.-            if g then 0x40 else 0 .|.-            if h then 0x80 else 0)-    bs-  fromBits1 bs = (Nothing, bs)--instance FromBits Word16 where-  fromBits1 (a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:bs) = (,)-    (Just $ if a then 0x0001 else 0 .|.-            if b then 0x0002 else 0 .|.-            if c then 0x0004 else 0 .|.-            if d then 0x0008 else 0 .|.-            if e then 0x0010 else 0 .|.-            if f then 0x0020 else 0 .|.-            if g then 0x0040 else 0 .|.-            if h then 0x0080 else 0 .|.-            if i then 0x0100 else 0 .|.-            if j then 0x0200 else 0 .|.-            if k then 0x0400 else 0 .|.-            if l then 0x0800 else 0 .|.-            if m then 0x1000 else 0 .|.-            if n then 0x2000 else 0 .|.-            if o then 0x4000 else 0 .|.-            if p then 0x8000 else 0)-    bs-  fromBits1 bs = (Nothing, bs)--fromBitsDiff :: FromBits a => [Bool] -> ([a] -> [a], [Bool])-fromBitsDiff bs = case fromBits1 bs of-  (Nothing, rs) -> (id  ,              rs)-  (Just a , rs) -> case fromBitsDiff rs of-    (f, ss) -> ((a:) . f, ss)--fromBitsDiffN :: FromBits a => Int -> [Bool] -> ([a] -> [a], [Bool])-fromBitsDiffN n bs-  | n >  0    = case fromBits1 bs of-                  (Nothing, rs) -> (id  , rs)-                  (Just a , rs) -> case fromBitsDiffN (n - 1) rs of-                    (f, ss) -> ((a:) . f, ss)-  | n == 0    = (id, bs)-  | n <  0    = error "Invalid count"-  | null bs   = (id, [])-  | otherwise = error "Error"--stringToBits :: String -> [Bool]-stringToBits [] = []-stringToBits ('1' :xs) = True :stringToBits xs-stringToBits ('0' :xs) = False:stringToBits xs-stringToBits (' ' :xs) = stringToBits xs-stringToBits ('\n':xs) = stringToBits xs-stringToBits (_   :_ ) = error "Invalid bit"
− src/HaskellWorks/Data/Bits/Conversion.hs
@@ -1,127 +0,0 @@-{-# LANGUAGE FlexibleInstances    #-}-{-# LANGUAGE UndecidableInstances #-}--module HaskellWorks.Data.Bits.Conversion-  ( AsBits(..)-  , FromBits(..)-  , bitsToString-  , bitsShows-  , fromBitsDiff-  , fromBitsDiffN-  , stringToBits-  )-  where--import Data.Bits-import Data.Word--bitsDiff' :: FiniteBits a => a -> Int -> Int -> [Bool] -> [Bool]-bitsDiff' a n len bs-  | n < len   = testBit a n : bitsDiff' a (n + 1) len bs-  | n == len  = bs-  | otherwise = error "Invalid index"--bits :: AsBits a => a -> [Bool]-bits a = bitsDiff a []--bitsShows' :: [Bool] -> ShowS-bitsShows' [] s = s-bitsShows' (True :bs) s = '1':bitsShows' bs s-bitsShows' (False:bs) s = '0':bitsShows' bs s--bitsShows :: AsBits a => a -> ShowS-bitsShows = bitsShows' . bits--bitsToString :: AsBits a => a -> String-bitsToString bs = bitsShows bs ""---- unbits :: AsBits a => [Bool] -> (a, [Bool])--- unbits a =  _uu----- bitsUnshows :: AsBits a => String -> (a, String)--- bitsUnshows = bitsShows' . bits------ stringToBits :: AsBits a => String -> (a, String)--- stringToBits as = _u--class AsBits a where-  bitsDiff :: a -> [Bool] -> [Bool]--class FromBits a where-  fromBits1 :: [Bool] -> (Maybe a, [Bool])------------------------------------------------------------------------------------instance AsBits Bool where-  bitsDiff = (:)--instance AsBits Word8 where-  bitsDiff a = bitsDiff' a 0 (finiteBitSize a)--instance AsBits a => AsBits [a] where-  bitsDiff [] = id-  bitsDiff (x:xs) = bitsDiff x . bitsDiff xs--instance FromBits Bool where-  fromBits1 [] = (Nothing, [])-  fromBits1 (b:bs) = (Just b, bs)--instance FromBits Word8 where-  fromBits1 (a:b:c:d:e:f:g:h:bs) = (,)-    (Just $ if a then 0x01 else 0 .|.-            if b then 0x02 else 0 .|.-            if c then 0x04 else 0 .|.-            if d then 0x08 else 0 .|.-            if e then 0x10 else 0 .|.-            if f then 0x20 else 0 .|.-            if g then 0x40 else 0 .|.-            if h then 0x80 else 0)-    bs-  fromBits1 bs = (Nothing, bs)--instance FromBits Word16 where-  fromBits1 (a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:bs) = (,)-    (Just $ if a then 0x0001 else 0 .|.-            if b then 0x0002 else 0 .|.-            if c then 0x0004 else 0 .|.-            if d then 0x0008 else 0 .|.-            if e then 0x0010 else 0 .|.-            if f then 0x0020 else 0 .|.-            if g then 0x0040 else 0 .|.-            if h then 0x0080 else 0 .|.-            if i then 0x0100 else 0 .|.-            if j then 0x0200 else 0 .|.-            if k then 0x0400 else 0 .|.-            if l then 0x0800 else 0 .|.-            if m then 0x1000 else 0 .|.-            if n then 0x2000 else 0 .|.-            if o then 0x4000 else 0 .|.-            if p then 0x8000 else 0)-    bs-  fromBits1 bs = (Nothing, bs)--fromBitsDiff :: FromBits a => [Bool] -> ([a] -> [a], [Bool])-fromBitsDiff bs = case fromBits1 bs of-  (Nothing, rs) -> (id  ,              rs)-  (Just a , rs) -> case fromBitsDiff rs of-    (f, ss) -> ((a:) . f, ss)--fromBitsDiffN :: FromBits a => Int -> [Bool] -> ([a] -> [a], [Bool])-fromBitsDiffN n bs-  | n >  0    = case fromBits1 bs of-                  (Nothing, rs) -> (id  , rs)-                  (Just a , rs) -> case fromBitsDiffN (n - 1) rs of-                    (f, ss) -> ((a:) . f, ss)-  | n == 0    = (id, bs)-  | n <  0    = error "Invalid count"-  | null bs   = (id, [])-  | otherwise = error "Error"--stringToBits :: String -> [Bool]-stringToBits [] = []-stringToBits ('1' :xs) = True :stringToBits xs-stringToBits ('0' :xs) = False:stringToBits xs-stringToBits (' ' :xs) = stringToBits xs-stringToBits ('\n':xs) = stringToBits xs-stringToBits (_   :_ ) = error "Invalid bit"
− src/HaskellWorks/Data/Bits/ElemFixedBitSize.hs
@@ -1,82 +0,0 @@-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE TypeFamilies      #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.--module HaskellWorks.Data.Bits.ElemFixedBitSize-    ( ElemFixedBitSize(..)-    ) where--import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Positioning--class ElemFixedBitSize v where-  type Elem v-  elemFixedBitSize :: v -> Count--instance ElemFixedBitSize [Bool] where-  type Elem [Bool] = Bool-  elemFixedBitSize _ = 1--instance ElemFixedBitSize [Word8] where-  type Elem [Word8] = Word8-  elemFixedBitSize _ = 8--instance ElemFixedBitSize [Word16] where-  type Elem [Word16] = Word16-  elemFixedBitSize _ = 16--instance ElemFixedBitSize [Word32] where-  type Elem [Word32] = Word32-  elemFixedBitSize _ = 32--instance ElemFixedBitSize [Word64] where-  type Elem [Word64] = Word64-  elemFixedBitSize _ = 64--instance ElemFixedBitSize (DV.Vector Bool) where-  type Elem (DV.Vector Bool) = Bool-  elemFixedBitSize _ = 1--instance ElemFixedBitSize (DV.Vector Word8) where-  type Elem (DV.Vector Word8) = Word8-  elemFixedBitSize _ = 8--instance ElemFixedBitSize (DV.Vector Word16) where-  type Elem (DV.Vector Word16) = Word16-  elemFixedBitSize _ = 16--instance ElemFixedBitSize (DV.Vector Word32) where-  type Elem (DV.Vector Word32) = Word32-  elemFixedBitSize _ = 32--instance ElemFixedBitSize (DV.Vector Word64) where-  type Elem (DV.Vector Word64) = Word64-  elemFixedBitSize _ = 64--instance ElemFixedBitSize (DVS.Vector Bool) where-  type Elem (DVS.Vector Bool) = Bool-  elemFixedBitSize _ = 1--instance ElemFixedBitSize (DVS.Vector Word8) where-  type Elem (DVS.Vector Word8) = Word8-  elemFixedBitSize _ = 8--instance ElemFixedBitSize (DVS.Vector Word16) where-  type Elem (DVS.Vector Word16) = Word16-  elemFixedBitSize _ = 16--instance ElemFixedBitSize (DVS.Vector Word32) where-  type Elem (DVS.Vector Word32) = Word32-  elemFixedBitSize _ = 32--instance ElemFixedBitSize (DVS.Vector Word64) where-  type Elem (DVS.Vector Word64) = Word64-  elemFixedBitSize _ = 64-
− src/HaskellWorks/Data/Bits/FixedBitSize.hs
@@ -1,30 +0,0 @@--- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.--module HaskellWorks.Data.Bits.FixedBitSize-    ( FixedBitSize(..)-    ) where--import           Data.Word-import           HaskellWorks.Data.Positioning--class FixedBitSize a where-  fixedBitSize :: a -> Count--instance FixedBitSize Bool where-  fixedBitSize _ = 1--instance FixedBitSize Word8 where-  fixedBitSize _ = 8--instance FixedBitSize Word16 where-  fixedBitSize _ = 16--instance FixedBitSize Word32 where-  fixedBitSize _ = 32--instance FixedBitSize Word64 where-  fixedBitSize _ = 64
− src/HaskellWorks/Data/Bits/FromBools.hs
@@ -1,51 +0,0 @@--- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.FromBools-    ( FromBools(..)-    ) where--import           Data.Word-import           HaskellWorks.Data.Bits.BitWise-import           HaskellWorks.Data.Bits.FixedBitSize--class FromBools a where-  fromBools :: [Bool] -> Maybe (a, [Bool])--instance FromBools Word8 where-  fromBools [] = Nothing-  fromBools xs = go 0 0 xs-    where go _ w []        = Just (w, [])-          go n w (y:ys)-            | n < fixedBitSize w  = go (n + 1) (if y then w .|. (1 .<. n) else w) ys-            | n < 0               = error "Invalid index"-            | otherwise           = Just (w, y:ys)--instance FromBools Word16 where-  fromBools [] = Nothing-  fromBools xs = go 0 0 xs-    where go _ w []        = Just (w, [])-          go n w (y:ys)-            | n < fixedBitSize w  = go (n + 1) (if y then w .|. (1 .<. n) else w) ys-            | n < 0               = error "Invalid index"-            | otherwise           = Just (w, y:ys)--instance FromBools Word32 where-  fromBools [] = Nothing-  fromBools xs = go 0 0 xs-    where go _ w []        = Just (w, [])-          go n w (y:ys)-            | n < fixedBitSize w  = go (n + 1) (if y then w .|. (1 .<. n) else w) ys-            | n < 0               = error "Invalid index"-            | otherwise           = Just (w, y:ys)--instance FromBools Word64 where-  fromBools [] = Nothing-  fromBools xs = go 0 0 xs-    where go _ w []        = Just (w, [])-          go n w (y:ys)-            | n < fixedBitSize w  = go (n + 1) (if y then w .|. (1 .<. n) else w) ys-            | n < 0               = error "Invalid index"-            | otherwise           = Just (w, y:ys)
− src/HaskellWorks/Data/Bits/PopCount.hs
@@ -1,19 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.PopCount-    ( -- * Bit map-      PopCount(..)-    , module X-    ) where--import           HaskellWorks.Data.Bits.PopCount.PopCount0 as X-import           HaskellWorks.Data.Bits.PopCount.PopCount1 as X-import           HaskellWorks.Data.Positioning--class PopCount v e where-  popCount :: e -> v -> Count
− src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs
@@ -1,96 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies          #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.PopCount.PopCount0-    ( PopCount0(..)-    ) where--import qualified Data.Vector                               as DV-import qualified Data.Vector.Storable                      as DVS-import           Data.Word-import           HaskellWorks.Data.Bits.BitLength-import           HaskellWorks.Data.Bits.PopCount.PopCount1-import           HaskellWorks.Data.Positioning-import           Prelude                                   as P--class PopCount0 v where-  popCount0 :: v -> Count--instance PopCount0 Bool where-  popCount0 True  = 0-  popCount0 False = 1-  {-# INLINABLE popCount0 #-}--instance PopCount0 Word8 where-  popCount0 x0 = bitLength x0 - popCount1 x0-  {-# INLINABLE popCount0 #-}--instance PopCount0 Word16 where-  popCount0 x0 = bitLength x0 - popCount1 x0-  {-# INLINABLE popCount0 #-}--instance PopCount0 Word32 where-  popCount0 x0 = bitLength x0 - popCount1 x0-  {-# INLINABLE popCount0 #-}--instance PopCount0 Word64 where-  popCount0 x0 = bitLength x0 - popCount1 x0-  {-# INLINABLE popCount0 #-}--instance PopCount0 [Bool] where-  popCount0 = P.sum . fmap popCount0-  {-# INLINABLE popCount0 #-}--instance PopCount0 [Word8] where-  popCount0 = P.sum . fmap popCount0-  {-# INLINABLE popCount0 #-}--instance PopCount0 [Word16] where-  popCount0 = P.sum . fmap popCount0-  {-# INLINABLE popCount0 #-}--instance PopCount0 [Word32] where-  popCount0 = P.sum . fmap popCount0-  {-# INLINABLE popCount0 #-}--instance PopCount0 [Word64] where-  popCount0 = P.sum . fmap popCount0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DV.Vector Word8) where-  popCount0 = DV.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DV.Vector Word16) where-  popCount0 = DV.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DV.Vector Word32) where-  popCount0 = DV.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DV.Vector Word64) where-  popCount0 = DV.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DVS.Vector Word8) where-  popCount0 = DVS.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DVS.Vector Word16) where-  popCount0 = DVS.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DVS.Vector Word32) where-  popCount0 = DVS.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}--instance PopCount0 (DVS.Vector Word64) where-  popCount0 = DVS.foldl (\c -> (c +) . popCount0) 0-  {-# INLINABLE popCount0 #-}
− src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs
@@ -1,11 +0,0 @@---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.PopCount.PopCount1-    ( module X-    ) where--import           HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword as X
− src/HaskellWorks/Data/Bits/PopCount/PopCount1/Broadword.hs
@@ -1,111 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies          #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.PopCount.PopCount1.Broadword-    ( PopCount1(..)-    ) where--import qualified Data.Vector                    as DV-import qualified Data.Vector.Storable           as DVS-import           Data.Word-import           HaskellWorks.Data.Bits.BitWise-import           HaskellWorks.Data.Positioning-import           Prelude                        as P--class PopCount1 v where-  popCount1 :: v -> Count--instance PopCount1 Bool where-  popCount1 True  = 1-  popCount1 False = 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word8 where-  popCount1 x0 = Count (fromIntegral x3)-    where-      x1 = x0 - ((x0 .&. 0xaa) .>. 1)-      x2 = (x1 .&. 0x33) + ((x1 .>. 2) .&. 0x33)-      x3 = (x2 + (x2 .>. 4)) .&. 0x0f-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word16 where-  popCount1 x0 = Count (fromIntegral ((x3 * 0x0101) .>. 8))-    where-      x1 = x0 - ((x0 .&. 0xaaaa) .>. 1)-      x2 = (x1 .&. 0x3333) + ((x1 .>. 2) .&. 0x3333)-      x3 = (x2 + (x2 .>. 4)) .&. 0x0f0f-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word32 where-  popCount1 x0 = Count (fromIntegral ((x3 * 0x01010101) .>. 24))-    where-      x1 = x0 - ((x0 .&. 0xaaaaaaaa) .>. 1)-      x2 = (x1 .&. 0x33333333) + ((x1 .>. 2) .&. 0x33333333)-      x3 = (x2 + (x2 .>. 4)) .&. 0x0f0f0f0f-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word64 where-  popCount1 x0 = Count ((x3 * 0x0101010101010101) .>. 56)-    where-      x1 = x0 - ((x0 .&. 0xaaaaaaaaaaaaaaaa) .>. 1)-      x2 = (x1 .&. 0x3333333333333333) + ((x1 .>. 2) .&. 0x3333333333333333)-      x3 = (x2 + (x2 .>. 4)) .&. 0x0f0f0f0f0f0f0f0f-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Bool] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word8] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word16] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word32] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word64] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word8) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word16) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word32) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word64) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word8) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word16) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word32) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word64) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}
− src/HaskellWorks/Data/Bits/PopCount/PopCount1/GHC.hs
@@ -1,95 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies          #-}---- |--- Copyright: 2016 John Ky--- License: MIT------ Succinct operations.-module HaskellWorks.Data.Bits.PopCount.PopCount1.GHC-    ( PopCount1(..)-    ) where--import qualified Data.Bits                     as DB-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Positioning-import           Prelude                       as P--class PopCount1 v where-  popCount1 :: v -> Count--instance PopCount1 Bool where-  popCount1 True  = 1-  popCount1 False = 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word8 where-  popCount1 = fromIntegral . DB.popCount-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word16 where-  popCount1 = fromIntegral . DB.popCount-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word32 where-  popCount1 = fromIntegral . DB.popCount-  {-# INLINABLE popCount1 #-}--instance PopCount1 Word64 where-  popCount1 = fromIntegral . DB.popCount-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Bool] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word8] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word16] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word32] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 [Word64] where-  popCount1 = P.sum . fmap popCount1-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word8) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word16) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word32) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DV.Vector Word64) where-  popCount1 = DV.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word8) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word16) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word32) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}--instance PopCount1 (DVS.Vector Word64) where-  popCount1 = DVS.foldl (\c -> (c +) . popCount1) 0-  {-# INLINABLE popCount1 #-}
− src/HaskellWorks/Data/ByteString.hs
@@ -1,11 +0,0 @@-module HaskellWorks.Data.ByteString-  ( chunkedBy-  ) where--import qualified Data.ByteString as BS--chunkedBy :: Int -> BS.ByteString -> [BS.ByteString]-chunkedBy n bs = if BS.length bs == 0-  then []-  else case BS.splitAt n bs of-    (as, zs) -> as : chunkedBy n zs
+ src/HaskellWorks/Data/Conduit/ByteString.hs view
@@ -0,0 +1,32 @@+module HaskellWorks.Data.Conduit.ByteString+  ( rechunk+  ) where++import           Control.Monad+import qualified Data.ByteString as BS+import           Data.Conduit++rechunk :: Monad m => Int -> Conduit BS.ByteString m BS.ByteString+rechunk = rechunk' BS.empty++rechunk' :: Monad m => BS.ByteString -> Int -> Conduit BS.ByteString m BS.ByteString+rechunk' as n | BS.length as >= n = do+  yield (BS.take n as)+  rechunk' (BS.drop n as) n+rechunk' as n = do+  mbss <- slurp (n - BS.length as)+  case mbss of+    Just bss -> do+      let bs = BS.concat (as : bss)+      yield (BS.take n bs)+      rechunk' (BS.drop n bs) n+    Nothing -> unless (BS.null as) $ yield as++slurp :: Monad m => Int -> ConduitM BS.ByteString BS.ByteString m (Maybe [BS.ByteString])+slurp = go []+  where go rs n | n > 0 = do+          mbs <- await+          case mbs of+            Just bs -> go (bs : rs) (n - BS.length bs)+            Nothing -> if null rs then return Nothing else return (Just (reverse rs))+        go rs _ = if null rs then return Nothing else return (Just (reverse rs))
src/HaskellWorks/Data/Conduit/Json.hs view
@@ -4,29 +4,22 @@ module HaskellWorks.Data.Conduit.Json   ( blankedJsonToInterestBits   , byteStringToBits-  , markerToByteString   , blankedJsonToBalancedParens-  , jsonToken2Markers-  , textToJsonToken+  , blankedJsonToBalancedParens2+  , compressWordAsBit   , interestingWord8s-  , jsonToken2BalancedParens   ) where  import           Control.Monad-import           Control.Monad.Trans.Resource                         (MonadThrow)-import           Data.Array.Unboxed                                   as A-import qualified Data.Bits                                            as BITS-import           Data.ByteString                                      as BS+import           Data.Array.Unboxed                   as A+import qualified Data.Bits                            as BITS+import           Data.ByteString                      as BS import           Data.Conduit import           Data.Int import           Data.Word import           HaskellWorks.Data.Bits.BitWise import           HaskellWorks.Data.Conduit.Json.Words-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset-import           HaskellWorks.Data.Json.Final.Tokenize-import           HaskellWorks.Data.Json.Token-import           Prelude                                              as P+import           Prelude                              as P  interestingWord8s :: A.UArray Word8 Word8 interestingWord8s = A.array (0, 255) [@@ -65,64 +58,6 @@                     , BS.drop 8 as                     ) -markerToByteString' :: Monad m => Int64 -> Word8 -> Conduit Int64 m BS.ByteString-markerToByteString' a v = do-  mo <- await-  case mo of-    Just o -> if o < (a + 8)-      then markerToByteString' a (BITS.bit (fromIntegral (o - a)) .|. v)-      else do-        yield $ BS.singleton v-        leftover o-        markerToByteString' (a + 8) 0-    Nothing -> when (v /= 0) $ yield $ BS.singleton v--markerToByteString :: Monad m => Conduit Int64 m BS.ByteString-markerToByteString = markerToByteString' 0 0--textToJsonToken :: MonadThrow m => Conduit BS.ByteString m (ParseDelta Offset, JsonToken)-textToJsonToken = conduitParser (Offset 0) parseJsonToken--jsonToken2Markers :: Monad m => Conduit (ParseDelta Offset, JsonToken) m Int64-jsonToken2Markers = do-  mi <- await-  case mi of-    Just (ParseDelta (Offset start) _, token) -> do-      case token of-        JsonTokenBraceL     -> yield $ fromIntegral start-        JsonTokenBraceR     -> return ()-        JsonTokenBracketL   -> yield $ fromIntegral start-        JsonTokenBracketR   -> return ()-        JsonTokenComma      -> return ()-        JsonTokenColon      -> return ()-        JsonTokenWhitespace -> return ()-        JsonTokenString _   -> yield $ fromIntegral start-        JsonTokenBoolean _  -> yield $ fromIntegral start-        JsonTokenNumber _   -> yield $ fromIntegral start-        JsonTokenNull       -> yield $ fromIntegral start-      jsonToken2Markers-    Nothing -> return ()--jsonToken2BalancedParens :: Monad m => Conduit (ParseDelta Offset, JsonToken) m Bool-jsonToken2BalancedParens = do-  mi <- await-  case mi of-    Just (ParseDelta (Offset _) _, token) -> do-      case token of-        JsonTokenBraceL     -> yield True-        JsonTokenBraceR     -> yield False-        JsonTokenBracketL   -> yield True-        JsonTokenBracketR   -> yield False-        JsonTokenComma      -> return ()-        JsonTokenColon      -> return ()-        JsonTokenWhitespace -> return ()-        JsonTokenString _   -> yield True >> yield False-        JsonTokenBoolean _  -> yield True >> yield False-        JsonTokenNumber _   -> yield True >> yield False-        JsonTokenNull       -> yield True >> yield False-      jsonToken2BalancedParens-    Nothing -> return ()- blankedJsonToBalancedParens :: Monad m => Conduit BS.ByteString m Bool blankedJsonToBalancedParens = do   mbs <- await@@ -148,7 +83,55 @@     blankedJsonToBalancedParens' cs   Nothing -> return () -------------------------+compressWordAsBit :: Monad m => Conduit BS.ByteString m BS.ByteString+compressWordAsBit = do+  mbs <- await+  case mbs of+    Just bs -> do+      let (cs, _) = BS.unfoldrN (BS.length bs + 7 `div` 8) gen bs+      yield cs+    Nothing -> return ()+  where gen :: ByteString -> Maybe (Word8, ByteString)+        gen xs = if BS.length xs == 0+          then Nothing+          else Just ( BS.foldr (\b m -> ((b .&. 1) .|. (m .<. 1))) 0 (padRight 0 8 (BS.take 8 xs))+                    , BS.drop 8 xs+                    )++blankedJsonToBalancedParens2 :: Monad m => Conduit BS.ByteString m BS.ByteString+blankedJsonToBalancedParens2 = do+  mbs <- await+  case mbs of+    Just bs -> do+      let (cs, _) = BS.unfoldrN (BS.length bs * 2) gen (Nothing, bs)+      yield cs+    Nothing -> return ()+  where gen :: (Maybe Bool, ByteString) -> Maybe (Word8, (Maybe Bool, ByteString))+        gen (Just True  , bs) = Just (wFF, (Nothing, bs))+        gen (Just False , bs) = Just (w00, (Nothing, bs))+        gen (Nothing    , bs) = case BS.uncons bs of+          Just (c, cs) -> case balancedParensOf c of+            MiniN   -> gen        (Nothing    , cs)+            MiniT   -> Just (wFF, (Nothing    , cs))+            MiniF   -> Just (w00, (Nothing    , cs))+            MiniTF  -> Just (wFF, (Just False , cs))+          Nothing   -> Nothing++data MiniBP = MiniN | MiniT | MiniF | MiniTF++balancedParensOf :: Word8 -> MiniBP+balancedParensOf c = case c of+    d | d == wOpenBrace     -> MiniT+    d | d == wCloseBrace    -> MiniF+    d | d == wOpenBracket   -> MiniT+    d | d == wCloseBracket  -> MiniF+    d | d == wOpenParen     -> MiniT+    d | d == wCloseParen    -> MiniF+    d | d == wt             -> MiniTF+    d | d == wf             -> MiniTF+    d | d == w1             -> MiniTF+    d | d == wn             -> MiniTF+    _                       -> MiniN  yieldBitsOfWord8 :: Monad m => Word8 -> Conduit BS.ByteString m Bool yieldBitsOfWord8 w = do
src/HaskellWorks/Data/Conduit/Json/Words.hs view
@@ -78,6 +78,12 @@ w9 :: Word8 w9 = fromIntegral (ord '9') +w00 :: Word8+w00 = fromIntegral (ord '0')++wFF :: Word8+wFF = fromIntegral (ord '\255')+ isLeadingDigit :: Word8 -> Bool isLeadingDigit w = w == wMinus || (w >= w0 && w <= w9) 
− src/HaskellWorks/Data/Conduit/Tokenize/Attoparsec.hs
@@ -1,29 +0,0 @@-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE RankNTypes            #-}---- |--- Copyright: 2016 John Ky, 2011 Michael Snoyman, 2010 John Millikin--- License: MIT------ Conduits for tokenizing streams.------ This code was taken from attoparsec-enumerator and adapted for conduits.-module HaskellWorks.Data.Conduit.Tokenize.Attoparsec-    ( -- * Sink-      sinkParser-    , sinkParserEither-      -- * Conduit-    , conduitParser-    , conduitParserEither--      -- * Types-    , ParseError (..)-    , ParseDelta (..)-      -- * Classes-    , AttoparsecInput(..)-    , AttoparsecState(..)-    ) where--import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal
− src/HaskellWorks/Data/Conduit/Tokenize/Attoparsec/Internal.hs
@@ -1,196 +0,0 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE RankNTypes            #-}---- |--- Copyright: 2016 John Ky, 2011 Michael Snoyman, 2010 John Millikin--- License: MIT------ Consume attoparsec parsers via conduit.------ This code was taken from attoparsec-enumerator and adapted for conduits.-module HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal-    ( -- * Sink-      sinkParser-    , sinkParserEither-      -- * Conduit-    , conduitParser-    , conduitParserEither--      -- * Types-    , ParseError (..)-    , ParseDelta (..)-      -- * Classes-    , AttoparsecInput(..)-    , AttoparsecState(..)-    ) where--import           Control.Exception            (Exception)-import           Control.Monad                (unless)-import           Control.Monad.Trans.Resource (MonadThrow, monadThrow)-import qualified Data.Attoparsec.ByteString-import qualified Data.Attoparsec.Text-import qualified Data.Attoparsec.Types        as A-import qualified Data.ByteString              as B-import           Data.Conduit-import qualified Data.Text                    as T-import qualified Data.Text.Internal           as TI-import           Data.Typeable                (Typeable)-import           Prelude                      hiding (lines)---- | The context and message from a 'A.Fail' value.-data ParseError s = ParseError-    { errorContexts :: [String]-    , errorMessage  :: String-    , errorPosition :: s-    } | DivergentParser-    deriving (Show, Typeable)---- | The before and after state of a single parse in a conduit stream.-data ParseDelta s = ParseDelta-    { before :: !s-    , after  :: !s-    }-    deriving (Eq, Ord)---- | A class of types which may be consumed by an Attoparsec parser.-class AttoparsecInput a where-    parseA :: A.Parser a b -> a -> A.IResult a b-    feedA :: A.IResult a b -> a -> A.IResult a b-    empty :: a-    isNull :: a -> Bool-    notEmpty :: [a] -> [a]--    -- | Return the beginning of the first input with the length of-    -- the second input removed. Assumes the second string is shorter-    -- than the first.-    stripFromEnd :: a -> a -> a---- | A class of types and states which may be consumed by an Attoparsec parser.-class AttoparsecState a s where-    getState :: a -> s-    modState :: AttoparsecInput a => a -> s -> s--instance AttoparsecInput B.ByteString where-    parseA = Data.Attoparsec.ByteString.parse-    feedA = Data.Attoparsec.ByteString.feed-    empty = B.empty-    isNull = B.null-    notEmpty = filter (not . B.null)-    stripFromEnd b1 b2 = B.take (B.length b1 - B.length b2) b1--instance AttoparsecInput T.Text where-    parseA = Data.Attoparsec.Text.parse-    feedA = Data.Attoparsec.Text.feed-    empty = T.empty-    isNull = T.null-    notEmpty = filter (not . T.null)-    stripFromEnd (TI.Text arr1 off1 len1) (TI.Text _ _ len2) =-        TI.text arr1 off1 (len1 - len2)---- | Convert an Attoparsec 'A.Parser' into a 'Sink'. The parser will--- be streamed bytes until it returns 'A.Done' or 'A.Fail'.------ If parsing fails, a 'ParseError' will be thrown with 'monadThrow'.------ Since 0.5.0-sinkParser :: (AttoparsecInput a, AttoparsecState a s, MonadThrow m, Exception (ParseError s)) => s -> A.Parser a b -> Consumer a m b-sinkParser s = fmap snd . sinkParserPosErr s---- | Same as 'sinkParser', but we return an 'Either' type instead--- of raising an exception.------ Since 1.1.5-sinkParserEither :: (AttoparsecInput a, AttoparsecState a s, Monad m) => s -> A.Parser a b -> Consumer a m (Either (ParseError s) b)-sinkParserEither s = (fmap.fmap) snd . sinkParserPos s---- | Consume a stream of parsed tokens, returning both the token and--- the position it appears at. This function will raise a 'ParseError'--- on bad input.------ Since 0.5.0-conduitParser :: (AttoparsecInput a, AttoparsecState a s, MonadThrow m, Exception (ParseError s)) => s -> A.Parser a b -> Conduit a m (ParseDelta s, b)-conduitParser s parser = conduit s-       where-         conduit !pos = await >>= maybe (return ()) go-             where-               go x = do-                   leftover x-                   (!pos', !res) <- sinkParserPosErr pos parser-                   yield (ParseDelta pos pos', res)-                   conduit pos'-{-# INLINABLE conduitParser #-}---- | Same as 'conduitParser', but we return an 'Either' type instead--- of raising an exception.-conduitParserEither-    :: (Monad m, AttoparsecInput a, AttoparsecState a s)-    => s-    -> A.Parser a b-    -> Conduit a m (Either (ParseError s) (ParseDelta s, b))-conduitParserEither s parser = conduit s-  where-    conduit !pos = await >>= maybe (return ()) go-      where-        go x = do-          leftover x-          eres <- sinkParserPos pos parser-          case eres of-            Left e -> yield $ Left e-            Right (!pos', !res) -> do-              yield $! Right (ParseDelta pos pos', res)-              conduit pos'-{-# INLINABLE conduitParserEither #-}--sinkParserPosErr-    :: (AttoparsecInput a, AttoparsecState a s, MonadThrow m, Exception (ParseError s))-    => s-    -> A.Parser a b-    -> Consumer a m (s, b)-sinkParserPosErr s p = sinkParserPos s p >>= f-    where-      f (Left e) = monadThrow e-      f (Right a) = return a-{-# INLINABLE sinkParserPosErr #-}--sinkParserPos-    :: (AttoparsecInput a, AttoparsecState a s, Monad m)-    => s-    -> A.Parser a b-    -> Consumer a m (Either (ParseError s) (s, b))-sinkParserPos s p = sink empty s (parseA p)-  where-    -- sink :: a -> s -> (a -> A.IResult a b) -> Consumer a m (Either (ParseError s) (s, b))-    sink prev pos parser = await >>= maybe close push-      where-        push c-            | isNull c  = sink prev pos parser-            | otherwise = go False c $ parser c--        close = go True prev (feedA (parser empty) empty)--        go end c (A.Done lo x) = do-            let pos'-                    | end       = pos-                    | otherwise = modState prev pos-                y = stripFromEnd c lo-                pos'' = modState y pos'-            unless (isNull lo) $ leftover lo-            pos'' `seq` return $! Right (pos'', x)-        go end c (A.Fail rest contexts msg) =-            let x = stripFromEnd c rest-                pos'-                    | end       = pos-                    | otherwise = modState prev pos-                pos'' = modState x pos'-             in pos'' `seq` return $! Left (ParseError contexts msg pos'')-        go end c (A.Partial parser')-            | end       = return $! Left DivergentParser-            | otherwise =-                pos' `seq` sink c pos' parser'-              where-                pos' = modState prev pos--{-# INLINABLE sinkParserPos #-}
− src/HaskellWorks/Data/Conduit/Tokenize/Attoparsec/LineColumn.hs
@@ -1,84 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}---- |--- Copyright: 2016 John Ky, 2011 Michael Snoyman, 2010 John Millikin--- License: MIT------ Conduits for tokenizing streams.------ This code was taken from attoparsec-enumerator and adapted for conduits.-module HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn-    ( Position (..)-    ) where--import           Control.Exception                                      (Exception)-import           Control.Monad.Trans.Resource                           (MonadThrow)-import qualified Data.Attoparsec.Types                                  as A-import qualified Data.ByteString                                        as B-import           Data.Conduit-import qualified Data.Text                                              as T-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal-import           Prelude                                                hiding (lines)--data Position = Position-    { posLine :: {-# UNPACK #-} !Int-    , posCol  :: {-# UNPACK #-} !Int-    }-    deriving (Eq, Ord)--instance Show Position where-    show (Position l c) = show l ++ ':' : show c--instance Exception (ParseError Position)--instance Show (ParseDelta Position) where-    show (ParseDelta s e) = show s ++ '-' : show e--instance AttoparsecState B.ByteString Position where-    getState = B.foldl' f (Position 0 0)-      where-        f (Position l c) ch | ch == 10 = Position (l + 1) 0-                            | otherwise = Position l (c + 1)-    modState x (Position lines cols) =-        lines' `seq` cols' `seq` Position lines' cols'-      where-        Position dlines dcols = getState x-        lines' = lines + dlines-        cols' = (if dlines > 0 then 1 else cols) + dcols--instance AttoparsecState T.Text Position where-    getState = T.foldl' f (Position 0 0)-      where-        f (Position l c) ch | ch == '\n' = Position (l + 1) 0-                            | otherwise = Position l (c + 1)-    modState x (Position lines cols) =-        lines' `seq` cols' `seq` Position lines' cols'-      where-        Position dlines dcols = getState x-        lines' = lines + dlines-        cols' = (if dlines > 0 then 1 else cols) + dcols--{-# SPECIALIZE conduitParser-                  :: MonadThrow m-                  => Position-                  -> A.Parser T.Text b-                  -> Conduit T.Text m (ParseDelta Position, b) #-}--{-# SPECIALIZE conduitParser-                  :: MonadThrow m-                  => Position-                  -> A.Parser B.ByteString b-                  -> Conduit B.ByteString m (ParseDelta Position, b) #-}--{-# SPECIALIZE conduitParserEither-                  :: Monad m-                  => Position-                  -> A.Parser T.Text b-                  -> Conduit T.Text m (Either (ParseError Position) (ParseDelta Position, b)) #-}--{-# SPECIALIZE conduitParserEither-                  :: Monad m-                  => Position-                  -> A.Parser B.ByteString b-                  -> Conduit B.ByteString m (Either (ParseError Position) (ParseDelta Position, b)) #-}
− src/HaskellWorks/Data/Conduit/Tokenize/Attoparsec/Offset.hs
@@ -1,79 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}---- |--- Copyright: 2016 John Ky, 2011 Michael Snoyman, 2010 John Millikin--- License: MIT------ Conduits for tokenizing streams.------ This code was taken from attoparsec-enumerator and adapted for conduits.-module HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset-    ( Offset (..)-    ) where--import           Control.Exception                                      (Exception)-import           Control.Monad.Trans.Resource                           (MonadThrow)-import qualified Data.Attoparsec.Types                                  as A-import qualified Data.ByteString                                        as B-import           Data.Conduit-import           Data.Int-import qualified Data.Text                                              as T-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Internal-import           Prelude                                                hiding (lines)--data Offset = Offset-    { pos :: {-# UNPACK #-} !Int64-    }-    deriving (Eq, Ord)--instance Show Offset where-    show (Offset c) = show c--instance Exception (ParseError Offset)--instance Show (ParseDelta Offset) where-    show (ParseDelta s e) = show s ++ '-' : show e--instance AttoparsecState B.ByteString Offset where-    getState = B.foldl' f (Offset 0)-      where-        f (Offset c) _ = Offset (c + 1)-    modState x (Offset cols) = cols' `seq` Offset cols'-      where-        Offset dcols = getState x-        cols' = cols + dcols--instance AttoparsecState T.Text Offset where-    getState = T.foldl' f (Offset 0)-      where-        f (Offset c) _ = Offset (c + 1)-    modState x (Offset cols) =-        cols' `seq` Offset cols'-      where-        Offset dcols = getState x-        cols' = cols + dcols--{-# SPECIALIZE conduitParser-                  :: MonadThrow m-                  => Offset-                  -> A.Parser T.Text b-                  -> Conduit T.Text m (ParseDelta Offset, b) #-}--{-# SPECIALIZE conduitParser-                  :: MonadThrow m-                  => Offset-                  -> A.Parser B.ByteString b-                  -> Conduit B.ByteString m (ParseDelta Offset, b) #-}--{-# SPECIALIZE conduitParserEither-                  :: Monad m-                  => Offset-                  -> A.Parser T.Text b-                  -> Conduit T.Text m (Either (ParseError Offset) (ParseDelta Offset, b)) #-}--{-# SPECIALIZE conduitParserEither-                  :: Monad m-                  => Offset-                  -> A.Parser B.ByteString b-                  -> Conduit B.ByteString m (Either (ParseError Offset) (ParseDelta Offset, b)) #-}
− src/HaskellWorks/Data/FromByteString.hs
@@ -1,8 +0,0 @@-module HaskellWorks.Data.FromByteString-  ( FromByteString(..)-  ) where--import           Data.ByteString.Internal--class FromByteString a where-  fromByteString :: ByteString -> a
− src/HaskellWorks/Data/FromForeignRegion.hs
@@ -1,7 +0,0 @@-module HaskellWorks.Data.FromForeignRegion where--import           Data.Word-import           Foreign.ForeignPtr--class FromForeignRegion a where-  fromForeignRegion :: (ForeignPtr Word8, Int, Int) -> a
src/HaskellWorks/Data/Json/Final/Tokenize.hs view
@@ -2,5 +2,4 @@     ( parseJsonToken     ) where -import           HaskellWorks.Data.Attoparsec.Final.Parser.ByteString () import           HaskellWorks.Data.Json.Final.Tokenize.Internal
src/HaskellWorks/Data/Json/Succinct.hs view
@@ -2,5 +2,4 @@   ( module X   ) where -import HaskellWorks.Data.Json.Succinct.Cursor     as X-import HaskellWorks.Data.Json.Succinct.Transform  as X+import           HaskellWorks.Data.Json.Succinct.Cursor as X
src/HaskellWorks/Data/Json/Succinct/Cursor/BalancedParens.hs view
@@ -8,9 +8,11 @@   , getJsonBalancedParens   ) where +import           Control.Applicative+import qualified Data.ByteString                                    as BS+import           Data.Conduit import qualified Data.Vector.Storable                               as DVS import           Data.Word-import           HaskellWorks.Data.Bits.FromBools import           HaskellWorks.Data.Conduit.Json import           HaskellWorks.Data.Conduit.List import           HaskellWorks.Data.Json.Succinct.Cursor.BlankedJson@@ -21,14 +23,29 @@ getJsonBalancedParens :: JsonBalancedParens a -> a getJsonBalancedParens (JsonBalancedParens a) = a +genBitWordsForever :: BS.ByteString -> Maybe (Word8, BS.ByteString)+genBitWordsForever bs = BS.uncons bs <|> Just (0, bs)+{-# INLINABLE genBitWordsForever #-}++instance FromBlankedJson (JsonBalancedParens (SimpleBalancedParens [Bool])) where+  fromBlankedJson (BlankedJson bj) = JsonBalancedParens (SimpleBalancedParens (runListConduit blankedJsonToBalancedParens bj))+ instance FromBlankedJson (JsonBalancedParens (SimpleBalancedParens (DVS.Vector Word8))) where-  fromBlankedJson (BlankedJson bj) = JsonBalancedParens (SimpleBalancedParens (DVS.unfoldr fromBools (runListConduit blankedJsonToBalancedParens bj)))+  fromBlankedJson bj    = JsonBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))+    where interestBS    = BS.concat (runListConduit (blankedJsonToBalancedParens2 =$= compressWordAsBit) (getBlankedJson bj))+          newLen        = (BS.length interestBS + 7) `div` 8 * 8  instance FromBlankedJson (JsonBalancedParens (SimpleBalancedParens (DVS.Vector Word16))) where-  fromBlankedJson (BlankedJson bj) = JsonBalancedParens (SimpleBalancedParens (DVS.unfoldr fromBools (runListConduit blankedJsonToBalancedParens bj)))+  fromBlankedJson bj    = JsonBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))+    where interestBS    = BS.concat (runListConduit (blankedJsonToBalancedParens2 =$= compressWordAsBit) (getBlankedJson bj))+          newLen        = (BS.length interestBS + 7) `div` 8 * 8  instance FromBlankedJson (JsonBalancedParens (SimpleBalancedParens (DVS.Vector Word32))) where-  fromBlankedJson (BlankedJson bj) = JsonBalancedParens (SimpleBalancedParens (DVS.unfoldr fromBools (runListConduit blankedJsonToBalancedParens bj)))+  fromBlankedJson bj    = JsonBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))+    where interestBS    = BS.concat (runListConduit (blankedJsonToBalancedParens2 =$= compressWordAsBit) (getBlankedJson bj))+          newLen        = (BS.length interestBS + 7) `div` 8 * 8  instance FromBlankedJson (JsonBalancedParens (SimpleBalancedParens (DVS.Vector Word64))) where-  fromBlankedJson (BlankedJson bj) = JsonBalancedParens (SimpleBalancedParens (DVS.unfoldr fromBools (runListConduit blankedJsonToBalancedParens bj)))+  fromBlankedJson bj    = JsonBalancedParens (SimpleBalancedParens (DVS.unsafeCast (DVS.unfoldrN newLen genBitWordsForever interestBS)))+    where interestBS    = BS.concat (runListConduit (blankedJsonToBalancedParens2 =$= compressWordAsBit) (getBlankedJson bj))+          newLen        = (BS.length interestBS + 7) `div` 8 * 8
src/HaskellWorks/Data/Json/Succinct/Cursor/InterestBits.hs view
@@ -16,6 +16,7 @@ import           HaskellWorks.Data.Bits.BitShown import           HaskellWorks.Data.Conduit.Json import           HaskellWorks.Data.Conduit.List+import           HaskellWorks.Data.FromByteString import           HaskellWorks.Data.Json.Succinct.Cursor.BlankedJson import           HaskellWorks.Data.Succinct.RankSelect.Binary.Poppy512 @@ -33,11 +34,14 @@ genInterestForever :: ByteString -> Maybe (Word8, ByteString) genInterestForever bs = BS.uncons bs <|> Just (0, bs) +instance FromBlankedJson (JsonInterestBits (BitShown [Bool])) where+  fromBlankedJson = JsonInterestBits . fromByteString . BS.concat . runListConduit blankedJsonToInterestBits . getBlankedJson+ instance FromBlankedJson (JsonInterestBits (BitShown BS.ByteString)) where-  fromBlankedJson (BlankedJson bj) = JsonInterestBits (BitShown (BS.unfoldr genInterest (blankedJsonBssToInterestBitsBs bj)))+  fromBlankedJson = JsonInterestBits . BitShown . BS.unfoldr genInterest . blankedJsonBssToInterestBitsBs . getBlankedJson  instance FromBlankedJson (JsonInterestBits (BitShown (DVS.Vector Word8))) where-  fromBlankedJson (BlankedJson bj) = JsonInterestBits (BitShown (DVS.unfoldr genInterest (blankedJsonBssToInterestBitsBs bj)))+  fromBlankedJson = JsonInterestBits . BitShown . DVS.unfoldr genInterest . blankedJsonBssToInterestBitsBs . getBlankedJson  instance FromBlankedJson (JsonInterestBits (BitShown (DVS.Vector Word16))) where   fromBlankedJson bj = JsonInterestBits (BitShown (DVS.unsafeCast (DVS.unfoldrN newLen genInterestForever interestBS)))
src/HaskellWorks/Data/Json/Succinct/Cursor/Internal.hs view
@@ -20,7 +20,6 @@ import           HaskellWorks.Data.Json.Succinct.Cursor.BalancedParens import           HaskellWorks.Data.Json.Succinct.Cursor.BlankedJson import           HaskellWorks.Data.Json.Succinct.Cursor.InterestBits-import           HaskellWorks.Data.Json.Succinct.Transform import           HaskellWorks.Data.Positioning import           HaskellWorks.Data.Succinct.BalancedParens             as BP import           HaskellWorks.Data.Succinct.RankSelect.Binary.Poppy512@@ -49,11 +48,11 @@   fromString s = JsonCursor     { cursorText      = s     , cursorRank      = 1-    , balancedParens  = SimpleBalancedParens (jsonToInterestBalancedParens [bs])-    , interests       = BitShown interests'+    , interests       = getJsonInterestBits (fromBlankedJson blankedJson)+    , balancedParens  = getJsonBalancedParens (fromBlankedJson blankedJson)     }-    where bs          = BSC.pack s :: BS.ByteString-          interests'  = jsonToInterestBits [bs]+    where blankedJson :: BlankedJson+          blankedJson = fromByteString (BSC.pack s)  instance IsString (JsonCursor BS.ByteString (BitShown (DVS.Vector Word8)) (SimpleBalancedParens (DVS.Vector Word8))) where   fromString = fromByteString . BSC.pack
− src/HaskellWorks/Data/Json/Succinct/Transform.hs
@@ -1,18 +0,0 @@-module HaskellWorks.Data.Json.Succinct.Transform-  ( jsonToInterestBits-  , jsonToInterestBalancedParens-  ) where--import qualified Data.ByteString                      as BS-import           Data.Conduit-import           HaskellWorks.Data.Bits.BitShown-import           HaskellWorks.Data.Conduit.Json-import           HaskellWorks.Data.Conduit.Json.Blank-import           HaskellWorks.Data.Conduit.List-import           HaskellWorks.Data.FromByteString--jsonToInterestBits :: [BS.ByteString] -> [Bool]-jsonToInterestBits json = bitShown (fromByteString (BS.concat $ runListConduit (blankJson =$= blankedJsonToInterestBits) json))--jsonToInterestBalancedParens :: [BS.ByteString] -> [Bool]-jsonToInterestBalancedParens = runListConduit (blankJson =$= blankedJsonToBalancedParens)
− src/HaskellWorks/Data/Positioning.hs
@@ -1,34 +0,0 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-}--module HaskellWorks.Data.Positioning-  ( Count(..)-  , Position(..)-  , lastPositionOf-  , toCount-  , toPosition-  ) where--import           Data.Int-import           Data.Word-import           System.Random--newtype Count = Count { getCount :: Word64 }-  deriving (Eq, Num, Ord, Enum, Integral, Real, Random)--instance Show Count where-    show (Count w64) = show w64--newtype Position = Position { getPosition :: Int64 }-  deriving (Eq, Num, Ord, Enum, Real, Integral)--instance Show Position where-    show (Position n) = show n--toPosition :: Count -> Position-toPosition (Count n) = Position (fromIntegral n)--toCount :: Position -> Count-toCount (Position n) = Count (fromIntegral n)--lastPositionOf :: Count -> Position-lastPositionOf (Count c)  = Position (fromIntegral c - 1)
− src/HaskellWorks/Data/Search.hs
@@ -1,12 +0,0 @@-module HaskellWorks.Data.Search-    ( binarySearch-    ) where--binarySearch :: (Ord a, Integral n) => a -> (n -> a) -> n -> n -> n-binarySearch w f p q = if p + 1 >= q-  then p-  else let m = p + q `div` 2 in-    if w <= f m-      then binarySearch w f p m-      else binarySearch w f m q-{-# INLINABLE binarySearch #-}
src/HaskellWorks/Data/Succinct/BalancedParens/Simple.hs view
@@ -28,18 +28,22 @@  instance Functor SimpleBalancedParens where   fmap f (SimpleBalancedParens a) = SimpleBalancedParens (f a)+  {-# INLINABLE fmap   #-}  instance BitShow a => Show (SimpleBalancedParens a) where   show = bitShow  closeAt :: TestBit a => a -> Count -> Bool-closeAt v c = not (v .?. lastPositionOf c)+closeAt v c = not (v .?. toPosition (c - 1))+{-# INLINABLE closeAt #-}  openAt :: TestBit a => a -> Count -> Bool-openAt v c = v .?. lastPositionOf c+openAt v c = v .?. toPosition (c - 1)+{-# INLINABLE openAt #-}  require :: Bool -> String -> a -> a require p msg v = if p then v else error msg+{-# INLINABLE require #-}  findOpen' :: (BitLength a, TestBit a) => Count -> SimpleBalancedParens a -> Count -> Count findOpen' c v p =@@ -49,6 +53,7 @@       then p       else findOpen' (c - 1) v (p - 1)     else findOpen' (c + 1) v (p - 1)+{-# INLINABLE findOpen' #-}  findClose' :: (BitLength a, TestBit a) => Count -> SimpleBalancedParens a -> Count -> Count findClose' c v p =@@ -58,48 +63,76 @@       then p       else findClose' (c + 1) v (p + 1)     else findClose' (c - 1) v (p + 1)+{-# INLINABLE findClose' #-}  instance BalancedParens (SimpleBalancedParens [Bool]) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens (DVS.Vector Word8)) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens (DVS.Vector Word16)) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens (DVS.Vector Word32)) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens (DVS.Vector Word64)) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens Word8) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens Word16) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens Word32) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}  instance BalancedParens (SimpleBalancedParens Word64) where   findOpen  v p = if v `openAt`  p then p else findOpen'  (Count 0) v (p - 1)   findClose v p = if v `closeAt` p then p else findClose' (Count 0) v (p + 1)   enclose       = findOpen' (Count 1)+  {-# INLINABLE findOpen  #-}+  {-# INLINABLE findClose #-}+  {-# INLINABLE enclose   #-}
− src/HaskellWorks/Data/Vector/BoxedVectorLike.hs
@@ -1,68 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}--module HaskellWorks.Data.Vector.BoxedVectorLike-  ( BoxedVectorLike(..)-  ) where--import qualified Data.Vector      as DV-import           Data.Word-import           Foreign.Storable--class BoxedVectorLike v e where-  bImap :: (Int -> a -> b) -> v a -> v b-  bMap :: (a -> b) -> v a -> v b-  bUnfoldr :: (Storable a) => (b -> Maybe (a, b)) -> b -> v a-  bUnfoldrN :: (Storable a) => Int -> (b -> Maybe (a, b)) -> b -> v a--instance BoxedVectorLike DV.Vector Word8 where-  bImap = DV.imap-  {-# INLINABLE bImap #-}--  bMap = DV.map-  {-# INLINABLE bMap #-}--  bUnfoldr = DV.unfoldr-  {-# INLINABLE bUnfoldr #-}--  bUnfoldrN = DV.unfoldrN-  {-# INLINABLE bUnfoldrN #-}--instance BoxedVectorLike DV.Vector Word16 where-  bImap = DV.imap-  {-# INLINABLE bImap #-}--  bMap = DV.map-  {-# INLINABLE bMap #-}--  bUnfoldr = DV.unfoldr-  {-# INLINABLE bUnfoldr #-}--  bUnfoldrN = DV.unfoldrN-  {-# INLINABLE bUnfoldrN #-}--instance BoxedVectorLike DV.Vector Word32 where-  bImap = DV.imap-  {-# INLINABLE bImap #-}--  bMap = DV.map-  {-# INLINABLE bMap #-}--  bUnfoldr = DV.unfoldr-  {-# INLINABLE bUnfoldr #-}--  bUnfoldrN = DV.unfoldrN-  {-# INLINABLE bUnfoldrN #-}--instance BoxedVectorLike DV.Vector Word64 where-  bImap = DV.imap-  {-# INLINABLE bImap #-}--  bMap = DV.map-  {-# INLINABLE bMap #-}--  bUnfoldr = DV.unfoldr-  {-# INLINABLE bUnfoldr #-}--  bUnfoldrN = DV.unfoldrN-  {-# INLINABLE bUnfoldrN #-}
− src/HaskellWorks/Data/Vector/Storable/ByteString.hs
@@ -1,38 +0,0 @@--- from spool---- | Convert between @ByteString@ and @Vector.Storable@--- without copying.-module HaskellWorks.Data.Vector.Storable.ByteString-    ( -- | See also the caveats mentioned in the package's-      -- top-level documentation.-      byteStringToVector-    , vectorToByteString-    ) where--import qualified Data.ByteString          as BS-import qualified Data.ByteString.Internal as BS-import qualified Data.Vector.Storable     as V--import           Foreign.ForeignPtr-import           Foreign.Storable--sizeOfElem :: (Storable a) => V.Vector a -> Int-sizeOfElem vec = sizeOf (undefined `asTypeOf` V.head vec)---- | Convert a @'BS.ByteString'@ to a @'V.Vector'@.------ This function can produce @'Vector'@s which do not obey--- architectural alignment requirements.  On @x86@ this should--- not be an issue.-byteStringToVector :: (Storable a) => BS.ByteString -> V.Vector a-byteStringToVector bs = vec where-    vec = V.unsafeFromForeignPtr (castForeignPtr fptr) (scale off) (scale len)-    (fptr, off, len) = BS.toForeignPtr bs-    scale = (`div` sizeOfElem vec)---- | Convert a @'V.Vector'@ to a @'BS.ByteString'@.-vectorToByteString :: (Storable a) => V.Vector a -> BS.ByteString-vectorToByteString vec-  = BS.fromForeignPtr (castForeignPtr fptr) (scale off) (scale len) where-    (fptr, off, len) = V.unsafeToForeignPtr vec-    scale = (* sizeOfElem vec)
− src/HaskellWorks/Data/Vector/StorableVectorLike.hs
@@ -1,68 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}--module HaskellWorks.Data.Vector.StorableVectorLike-  ( StorableVectorLike(..)-  ) where--import qualified Data.Vector.Storable as DVS-import           Data.Word-import           Foreign.Storable--class StorableVectorLike v e where-  sImap :: (Storable a, Storable b) => (Int -> a -> b) -> v a -> v b-  sMap :: (Storable a, Storable b) => (a -> b) -> v a -> v b-  sUnfoldr :: (Storable a) => (b -> Maybe (a, b)) -> b -> v a-  sUnfoldrN :: (Storable a) => Int -> (b -> Maybe (a, b)) -> b -> v a--instance StorableVectorLike DVS.Vector Word8 where-  sImap = DVS.imap-  {-# INLINABLE sImap #-}--  sMap = DVS.map-  {-# INLINABLE sMap #-}--  sUnfoldr = DVS.unfoldr-  {-# INLINABLE sUnfoldr #-}--  sUnfoldrN = DVS.unfoldrN-  {-# INLINABLE sUnfoldrN #-}--instance StorableVectorLike DVS.Vector Word16 where-  sImap = DVS.imap-  {-# INLINABLE sImap #-}--  sMap = DVS.map-  {-# INLINABLE sMap #-}--  sUnfoldr = DVS.unfoldr-  {-# INLINABLE sUnfoldr #-}--  sUnfoldrN = DVS.unfoldrN-  {-# INLINABLE sUnfoldrN #-}--instance StorableVectorLike DVS.Vector Word32 where-  sImap = DVS.imap-  {-# INLINABLE sImap #-}--  sMap = DVS.map-  {-# INLINABLE sMap #-}--  sUnfoldr = DVS.unfoldr-  {-# INLINABLE sUnfoldr #-}--  sUnfoldrN = DVS.unfoldrN-  {-# INLINABLE sUnfoldrN #-}--instance StorableVectorLike DVS.Vector Word64 where-  sImap = DVS.imap-  {-# INLINABLE sImap #-}--  sMap = DVS.map-  {-# INLINABLE sMap #-}--  sUnfoldr = DVS.unfoldr-  {-# INLINABLE sUnfoldr #-}--  sUnfoldrN = DVS.unfoldrN-  {-# INLINABLE sUnfoldrN #-}
− src/HaskellWorks/Data/Vector/VectorLike.hs
@@ -1,453 +0,0 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies          #-}--module HaskellWorks.Data.Vector.VectorLike-  ( VectorLike(..)-  ) where--import qualified Data.ByteString               as BS-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Positioning--class VectorLike v where-  type Elem v--  vToList :: v -> [Elem v]-  vFromList :: [Elem v] -> v-  (!!!) :: v -> Position -> Elem v-  vConcat :: [v] -> v-  vEmpty :: v-  vFilter :: (Elem v -> Bool) -> v -> v-  vGenerate :: Int -> (Int -> Elem v) -> v-  vLength :: v -> Count-  vSnoc :: v -> Elem v -> v-  vDrop :: Count -> v -> v-  vTake :: Count -> v -> v-  vIndex :: v -> Position -> Elem v-  vSlice :: Position -> Position -> v -> v---instance VectorLike String where-  type Elem String = Char--  vToList = id-  {-# INLINABLE vToList #-}--  vFromList = id-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v !! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = concat-  {-# INLINABLE vConcat #-}--  vEmpty = ""-  {-# INLINABLE vEmpty #-}--  vFilter = filter-  {-# INLINABLE vFilter #-}--  vGenerate n f = f `fmap` [0 .. (n - 1)]-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . length-  {-# INLINABLE vLength #-}--  vSnoc v c = v ++ [c]-  {-# INLINABLE vSnoc #-}--  vDrop = drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = v !! fromIntegral i-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = take (fromIntegral j) . drop (fromIntegral i)-  {-# INLINABLE vSlice #-}--instance VectorLike BS.ByteString where-  type Elem BS.ByteString = Word8--  vToList = BS.unpack-  {-# INLINABLE vToList #-}--  vFromList = BS.pack-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v `BS.index` fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = BS.concat-  {-# INLINABLE vConcat #-}--  vEmpty = BS.empty-  {-# INLINABLE vEmpty #-}--  vFilter = BS.filter-  {-# INLINABLE vFilter #-}--  vGenerate n f = fst (BS.unfoldrN n go 0)-    where go i = if i /= n then Just (f i, i + 1) else Nothing-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . BS.length-  {-# INLINABLE vLength #-}--  vSnoc = BS.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = BS.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = BS.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = BS.index v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = BS.take (fromIntegral j) . BS.drop (fromIntegral i)-  {-# INLINABLE vSlice #-}--instance VectorLike (DV.Vector Word8) where-  type Elem (DV.Vector Word8) = Word8--  vToList = DV.toList-  {-# INLINABLE vToList #-}--  vFromList = DV.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DV.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DV.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DV.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DV.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DV.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DV.length-  {-# INLINABLE vLength #-}--  vSnoc = DV.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DV.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DV.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DV.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DV.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}---instance VectorLike (DV.Vector Word16) where-  type Elem (DV.Vector Word16) = Word16--  vToList = DV.toList-  {-# INLINABLE vToList #-}--  vFromList = DV.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DV.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DV.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DV.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DV.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DV.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DV.length-  {-# INLINABLE vLength #-}--  vSnoc = DV.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DV.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DV.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DV.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DV.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}--instance VectorLike (DV.Vector Word32) where-  type Elem (DV.Vector Word32) = Word32--  vToList = DV.toList-  {-# INLINABLE vToList #-}--  vFromList = DV.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DV.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DV.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DV.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DV.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DV.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DV.length-  {-# INLINABLE vLength #-}--  vSnoc = DV.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DV.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DV.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DV.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DV.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}--instance VectorLike (DV.Vector Word64) where-  type Elem (DV.Vector Word64) = Word64--  vToList = DV.toList-  {-# INLINABLE vToList #-}--  vFromList = DV.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DV.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DV.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DV.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DV.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DV.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DV.length-  {-# INLINABLE vLength #-}--  vSnoc = DV.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DV.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DV.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DV.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DV.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}--instance VectorLike (DVS.Vector Word8) where-  type Elem (DVS.Vector Word8) = Word8--  vToList = DVS.toList-  {-# INLINABLE vToList #-}--  vFromList = DVS.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DVS.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DVS.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DVS.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DVS.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DVS.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DVS.length-  {-# INLINABLE vLength #-}--  vSnoc = DVS.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DVS.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DVS.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DVS.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DVS.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}--instance VectorLike (DVS.Vector Word16) where-  type Elem (DVS.Vector Word16) = Word16--  vToList = DVS.toList-  {-# INLINABLE vToList #-}--  vFromList = DVS.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DVS.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DVS.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DVS.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DVS.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DVS.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DVS.length-  {-# INLINABLE vLength #-}--  vSnoc = DVS.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DVS.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DVS.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DVS.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DVS.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}--instance VectorLike (DVS.Vector Word32) where-  type Elem (DVS.Vector Word32) = Word32--  vToList = DVS.toList-  {-# INLINABLE vToList #-}--  vFromList = DVS.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DVS.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DVS.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DVS.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DVS.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DVS.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DVS.length-  {-# INLINABLE vLength #-}--  vSnoc = DVS.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DVS.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DVS.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DVS.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DVS.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}--instance VectorLike (DVS.Vector Word64) where-  type Elem (DVS.Vector Word64) = Word64--  vToList = DVS.toList-  {-# INLINABLE vToList #-}--  vFromList = DVS.fromList-  {-# INLINABLE vFromList #-}--  (!!!) v (Position i) = v DVS.! fromIntegral i-  {-# INLINABLE (!!!) #-}--  vConcat = DVS.concat-  {-# INLINABLE vConcat #-}--  vEmpty = DVS.empty-  {-# INLINABLE vEmpty #-}--  vFilter = DVS.filter-  {-# INLINABLE vFilter #-}--  vGenerate = DVS.generate-  {-# INLINABLE vGenerate #-}--  vLength = Count . fromIntegral . DVS.length-  {-# INLINABLE vLength #-}--  vSnoc = DVS.snoc-  {-# INLINABLE vSnoc #-}--  vDrop = DVS.drop . fromIntegral-  {-# INLINABLE vDrop #-}--  vTake = DVS.take . fromIntegral-  {-# INLINABLE vTake #-}--  vIndex v (Position i) = DVS.unsafeIndex v (fromIntegral i)-  {-# INLINABLE vIndex #-}--  vSlice (Position i) (Position j) = DVS.unsafeSlice (fromIntegral i) (fromIntegral j)-  {-# INLINABLE vSlice #-}
− src/HaskellWorks/Data/Word.hs
@@ -1,40 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies          #-}--module HaskellWorks.Data.Word where--import           Data.Word-import           HaskellWorks.Data.Bits.BitLength-import           HaskellWorks.Data.Bits.BitWise--class WordConcat a where-  type DoubleWords a-  leConcat :: a -> a -> DoubleWords a--class WordSplit a where-  type HalfWords a-  leSplit :: a -> (HalfWords a, HalfWords a)--instance WordConcat Word8 where-  type DoubleWords Word8 = Word16-  leConcat a b = (fromIntegral b .<. bitLength a) .|. fromIntegral a--instance WordConcat Word16 where-  type DoubleWords Word16 = Word32-  leConcat a b = (fromIntegral b .<. bitLength a) .|. fromIntegral a--instance WordConcat Word32 where-  type DoubleWords Word32 = Word64-  leConcat a b = (fromIntegral b .<. bitLength a) .|. fromIntegral a--instance WordSplit Word64 where-  type HalfWords Word64 = Word32-  leSplit a = (fromIntegral a, fromIntegral (a .>. 32))--instance WordSplit Word32 where-  type HalfWords Word32 = Word16-  leSplit a = (fromIntegral a, fromIntegral (a .>. 16))--instance WordSplit Word16 where-  type HalfWords Word16 = Word8-  leSplit a = (fromIntegral a, fromIntegral (a .>. 8))
− src/HaskellWorks/Function.hs
@@ -1,6 +0,0 @@-module HaskellWorks.Function-  ( applyN-  ) where--applyN :: (a -> a) -> Int -> a -> a-applyN f n = foldl (.) id (replicate (fromIntegral n) f)
− test/HaskellWorks/Data/Bits/FromBoolsSpec.hs
@@ -1,157 +0,0 @@-{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}-{-# LANGUAGE OverloadedStrings   #-}-{-# LANGUAGE ScopedTypeVariables #-}--module HaskellWorks.Data.Bits.FromBoolsSpec (spec) where--import           Data.Word-import           HaskellWorks.Data.Bits.FromBools-import           Test.Hspec--{-# ANN module ("HLint: ignore Redundant do" :: String) #-}--spec :: Spec-spec = describe "HaskellWorks.Data.Bits.FromBoolsSpec" $ do-  describe "for Word8" $ do-    it "fromBool works for 0 bits" $ do-      let result = fromBools [] :: Maybe (Word8, [Bool])-      result `shouldBe` Nothing-    it "fromBool works for 4 bits" $ do-      let result = fromBools  [ True, False, True, False] :: Maybe (Word8, [Bool])-      result `shouldBe` Just (0x5, [])-    it "fromBool works for 8 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              ] :: Maybe (Word8, [Bool])-      result `shouldBe` Just (0x55, [])-    it "fromBool works for 12 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word8, [Bool])-      result `shouldBe` Just (0x55, [True, False, True, False])-  describe "for Word16" $ do-    it "fromBool works for 0 bits" $ do-      let result = fromBools [] :: Maybe (Word16, [Bool])-      result `shouldBe` Nothing-    it "fromBool works for 4 bits" $ do-      let result = fromBools  [ True, False, True, False-                              ] :: Maybe (Word16, [Bool])-      result `shouldBe` Just (0x5, [])-    it "fromBool works for 8 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              ] :: Maybe (Word16, [Bool])-      result `shouldBe` Just (0x55, [])-    it "fromBool works for 12 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word16, [Bool])-      result `shouldBe` Just (0x555, [])-    it "fromBool works for 16 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              ] :: Maybe (Word16, [Bool])-      result `shouldBe` Just (0x5555, [])-    it "fromBool works for 20 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word16, [Bool])-      result `shouldBe` Just (0x5555, [True, False, True, False])-  describe "for Word32" $ do-    it "fromBool works for 0 bits" $ do-      let result = fromBools [] :: Maybe (Word32, [Bool])-      result `shouldBe` Nothing-    it "fromBool works for 4 bits" $ do-      let result = fromBools  [ True, False, True, False-                              ] :: Maybe (Word32, [Bool])-      result `shouldBe` Just (0x5, [])-    it "fromBool works for 8 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              ] :: Maybe (Word32, [Bool])-      result `shouldBe` Just (0x55, [])-    it "fromBool works for 12 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word32, [Bool])-      result `shouldBe` Just (0x555, [])-    it "fromBool works for 20 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word32, [Bool])-      result `shouldBe` Just (0x55555, [])-    it "fromBool works for 32 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              ] :: Maybe (Word32, [Bool])-      result `shouldBe` Just (0x55555555, [])-    it "fromBool works for 36 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word32, [Bool])-      result `shouldBe` Just (0x55555555, [True, False, True, False])-  describe "for Word64" $ do-    it "fromBool works for 0 bits" $ do-      let result = fromBools [] :: Maybe (Word64, [Bool])-      result `shouldBe` Nothing-    it "fromBool works for 4 bits" $ do-      let result = fromBools  [ True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x5, [])-    it "fromBool works for 8 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x55, [])-    it "fromBool works for 12 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x555, [])-    it "fromBool works for 20 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x55555, [])-    it "fromBool works for 32 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x55555555, [])-    it "fromBool works for 36 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x555555555, [])-    it "fromBool works for 64 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x5555555555555555, [])-    it "fromBool works for 68 bits" $ do-      let result = fromBools  [ True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False, True, False, True, False-                              , True, False, True, False-                              ] :: Maybe (Word64, [Bool])-      result `shouldBe` Just (0x5555555555555555, [True, False, True, False])
+ test/HaskellWorks/Data/Conduit/ByteStringSpec.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE OverloadedStrings #-}++module HaskellWorks.Data.Conduit.ByteStringSpec (spec) where++import           HaskellWorks.Data.Conduit.ByteString+import           HaskellWorks.Data.Conduit.List+import           Test.Hspec++{-# ANN module ("HLint: ignore Redundant do" :: String) #-}++spec :: Spec+spec = describe "HaskellWorks.Data.Conduit.ByteStringSpec" $ do+  it "Can rechunk bytestrings" $ do+    runListConduit (rechunk 1) [] `shouldBe` []+    runListConduit (rechunk 1) ["0", "1", "2", "3", "4", "5"] `shouldBe` ["0", "1", "2", "3", "4", "5"]+    runListConduit (rechunk 2) ["0", "1", "2", "3", "4", "5"] `shouldBe` ["01", "23", "45"]+    runListConduit (rechunk 3) ["0", "1", "2", "3", "4", "5"] `shouldBe` ["012", "345"]+    runListConduit (rechunk 4) ["0", "1", "2", "3", "4", "5"] `shouldBe` ["0123", "45"]+    runListConduit (rechunk 5) ["0", "1", "2", "3", "4", "5"] `shouldBe` ["01234", "5"]+    runListConduit (rechunk 6) ["0", "1", "2", "3", "4", "5"] `shouldBe` ["012345"]+    runListConduit (rechunk 7) ["0", "1", "2", "3", "4", "5"] `shouldBe` ["012345"]+    runListConduit (rechunk 1) ["01", "23", "", "45", "67"] `shouldBe` ["0", "1", "2", "3", "4", "5", "6", "7"]+    runListConduit (rechunk 2) ["01", "23", "", "45", "67"] `shouldBe` ["01", "23", "45", "67"]+    runListConduit (rechunk 3) ["01", "23", "", "45", "67"] `shouldBe` ["012", "345", "67"]+    runListConduit (rechunk 4) ["01", "23", "", "45", "67"] `shouldBe` ["0123", "4567"]+    runListConduit (rechunk 5) ["01", "23", "", "45", "67"] `shouldBe` ["01234", "567"]+    runListConduit (rechunk 6) ["01", "23", "", "45", "67"] `shouldBe` ["012345", "67"]+    runListConduit (rechunk 7) ["01", "23", "", "45", "67"] `shouldBe` ["0123456", "7"]+    runListConduit (rechunk 8) ["01", "23", "", "45", "67"] `shouldBe` ["01234567"]+    runListConduit (rechunk 9) ["01", "23", "", "45", "67"] `shouldBe` ["01234567"]
− test/HaskellWorks/Data/Conduit/JsonSpec.hs
@@ -1,108 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}--module HaskellWorks.Data.Conduit.JsonSpec (spec) where--import           Data.ByteString                                      as BS-import           Data.Conduit-import           Data.Int-import           HaskellWorks.Data.Bits.BitShown-import           HaskellWorks.Data.Bits.Conversion-import           HaskellWorks.Data.Conduit.Json-import           HaskellWorks.Data.Conduit.List-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset-import           HaskellWorks.Data.Json.Token-import           Test.Hspec--{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}--markerToBits :: [Int64] -> [Bool]-markerToBits = runListConduit (markerToByteString =$= byteStringToBits)--jsonToBits :: [ByteString] -> [Bool]-jsonToBits = runListConduit (textToJsonToken =$= jsonToken2Markers =$= markerToByteString =$= byteStringToBits)--jsonToken2Markers2 :: [(ParseDelta Offset, JsonToken)] -> [Int64]-jsonToken2Markers2 = runListConduit jsonToken2Markers--blankedJsonToInterestBits2 :: ByteString -> BitShown ByteString-blankedJsonToInterestBits2 bs = BitShown (BS.concat (runListConduit blankedJsonToInterestBits [bs]))--spec :: Spec-spec = describe "Data.Conduit.Succinct.JsonSpec" $ do-  it "No markers should produce no bits" $-    markerToBits [] `shouldBe` []-  it "One marker < 8 should produce one byte with one bit set" $ do-    markerToBits [0] `shouldBe` stringToBits "10000000"-    markerToBits [1] `shouldBe` stringToBits "01000000"-    markerToBits [2] `shouldBe` stringToBits "00100000"-    markerToBits [3] `shouldBe` stringToBits "00010000"-    markerToBits [4] `shouldBe` stringToBits "00001000"-    markerToBits [5] `shouldBe` stringToBits "00000100"-    markerToBits [6] `shouldBe` stringToBits "00000010"-    markerToBits [7] `shouldBe` stringToBits "00000001"-  it "One 8 <= marker < 16 should produce one byte empty byte and another byte with one bit set" $ do-    markerToBits [ 8] `shouldBe` stringToBits "00000000 10000000"-    markerToBits [ 9] `shouldBe` stringToBits "00000000 01000000"-    markerToBits [10] `shouldBe` stringToBits "00000000 00100000"-    markerToBits [11] `shouldBe` stringToBits "00000000 00010000"-    markerToBits [12] `shouldBe` stringToBits "00000000 00001000"-    markerToBits [13] `shouldBe` stringToBits "00000000 00000100"-    markerToBits [14] `shouldBe` stringToBits "00000000 00000010"-    markerToBits [15] `shouldBe` stringToBits "00000000 00000001"-  it "All markers 0 .. 7 should produce one full byte" $-    markerToBits [0, 1, 2, 3, 4, 5, 6, 7] `shouldBe` stringToBits "11111111"-  it "All markers 0 .. 7 except 1 should produce one almost full byte" $ do-    markerToBits [1, 2, 3, 4, 5, 6, 7] `shouldBe` stringToBits "01111111"-    markerToBits [0, 2, 3, 4, 5, 6, 7] `shouldBe` stringToBits "10111111"-    markerToBits [0, 1, 3, 4, 5, 6, 7] `shouldBe` stringToBits "11011111"-    markerToBits [0, 1, 2, 4, 5, 6, 7] `shouldBe` stringToBits "11101111"-    markerToBits [0, 1, 2, 3, 5, 6, 7] `shouldBe` stringToBits "11110111"-    markerToBits [0, 1, 2, 3, 4, 6, 7] `shouldBe` stringToBits "11111011"-    markerToBits [0, 1, 2, 3, 4, 5, 7] `shouldBe` stringToBits "11111101"-    markerToBits [0, 1, 2, 3, 4, 5, 6] `shouldBe` stringToBits "11111110"-  it "All markers 0 .. 8 should produce one almost full byte and one near empty byte" $-    markerToBits [0, 1, 2, 3, 4, 5, 6, 7, 8] `shouldBe` stringToBits "11111111 10000000"-  it "Matching bits for bytes" $-    runListConduit byteStringToBits [pack [0x80], pack [0xff], pack [0x01]] `shouldBe`-      stringToBits "00000001 11111111 10000000"-  it "Every interesting token should produce a marker" $-    jsonToken2Markers2 [-      (ParseDelta (Offset 0) (Offset 1), JsonTokenBraceL),-      (ParseDelta (Offset 1) (Offset 2), JsonTokenBraceL),-      (ParseDelta (Offset 2) (Offset 3), JsonTokenBraceR),-      (ParseDelta (Offset 3) (Offset 4), JsonTokenBraceR)] `shouldBe` [0, 1]-  describe "When converting Json to tokens to markers to bits" $ do-    it "Empty Json should produce no bits" $-      jsonToBits [""] `shouldBe` []-    it "Spaces and newlines should produce no bits" $-      jsonToBits ["  \n \r \t "] `shouldBe` []-    it "number at beginning should produce one bit" $-      jsonToBits ["1234 "] `shouldBe` stringToBits "10000000"-    it "false at beginning should produce one bit" $-      jsonToBits ["false "] `shouldBe` stringToBits "10000000"-    it "true at beginning should produce one bit" $-      jsonToBits ["true "] `shouldBe` stringToBits "10000000"-    it "string at beginning should produce one bit" $-      jsonToBits ["\"hello\" "] `shouldBe` stringToBits "10000000"-    it "string at beginning should produce one bit" $-      jsonToBits ["\"\\\"\" "] `shouldBe` stringToBits "10000000"-    it "left brace at beginning should produce one bit" $-      jsonToBits ["{ "] `shouldBe` stringToBits "10000000"-    it "right brace at beginning should produce one bit" $-      jsonToBits ["} "] `shouldBe` stringToBits ""-    it "left bracket at beginning should produce one bit" $-      jsonToBits ["[ "] `shouldBe` stringToBits "10000000"-    it "right bracket at beginning should produce one bit" $-      jsonToBits ["] "] `shouldBe` stringToBits ""-    it "right bracket at beginning should produce one bit" $-      jsonToBits [": "] `shouldBe` stringToBits ""-    it "right bracket at beginning should produce one bit" $-      jsonToBits [", "] `shouldBe` stringToBits ""-    it "Four consecutive braces should produce four bits" $-      jsonToBits ["{{}}"] `shouldBe` stringToBits "11000000"-    it "Four spread out braces should produce four spread out bits" $-      jsonToBits [" { { } } "] `shouldBe` stringToBits "01010000"-  describe "Can convert blanked json to Json interest bits" $ do-    it "where blanked json is \" { (  ): 100, [(), t___], n___}\"" $ do-      blankedJsonToInterestBits2 " { (  ): 100, [(), t___], n___}" `shouldBe` "01010000 01000011 00010000 00100000"
− test/HaskellWorks/Data/Conduit/Tokenize/Attoparsec/LineColumnSpec.hs
@@ -1,171 +0,0 @@-{-# LANGUAGE CPP               #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TupleSections     #-}-{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}--module HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumnSpec (spec) where--import           Control.Applicative                                      ((<|>))-import           Control.Exception                                        (fromException)-import           Control.Monad-import           Control.Monad.Trans.Resource                             (runExceptionT)-import qualified Data.Attoparsec.ByteString.Char8-import qualified Data.Attoparsec.Text-import           Data.Conduit-import qualified Data.Conduit.List                                        as CL-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec.LineColumn-import           Test.Hspec--spec :: Spec-spec = describe "Data.Conduit.Tokenize.Attoparsec.LineColumnSpec" $ do-    describe "error position" $ do-        it "works for text" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badLine = 4-                badCol = 6-                parser = Data.Attoparsec.Text.endOfInput <|> (Data.Attoparsec.Text.notChar 'b' >> parser)-                sink = sinkParser (Position 1 1) parser-                sink' = sinkParserEither (Position 1 1) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Position badLine badCol-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Position badLine badCol-        it "works for bytestring" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badLine = 4-                badCol = 6-                parser = Data.Attoparsec.ByteString.Char8.endOfInput <|> (Data.Attoparsec.ByteString.Char8.notChar 'b' >> parser)-                sink = sinkParser (Position 1 1) parser-                sink' = sinkParserEither (Position 1 1) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Position badLine badCol-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Position badLine badCol-        it "works in last chunk" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badLine = 6-                badCol = 5-                parser = Data.Attoparsec.Text.char 'c' <|> (Data.Attoparsec.Text.anyChar >> parser)-                sink = sinkParser (Position 1 1) parser-                sink' = sinkParserEither (Position 1 1) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Position badLine badCol-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Position badLine badCol-        it "works in last chunk" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aa\n\naaaab"]-                badLine = 6-                badCol = 6-                parser = Data.Attoparsec.Text.string "bc" <|> (Data.Attoparsec.Text.anyChar >> parser)-                sink = sinkParser (Position 1 1) parser-                sink' = sinkParserEither (Position 1 1) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Position badLine badCol-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Position badLine badCol-        it "works after new line in text" $ do-            let input = ["aaa\n", "aaa\n\n", "aaa", "aa\nb\naaaa"]-                badLine = 5-                badCol = 1-                parser = Data.Attoparsec.Text.endOfInput <|> (Data.Attoparsec.Text.notChar 'b' >> parser)-                sink = sinkParser (Position 1 1) parser-                sink' = sinkParserEither (Position 1 1) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Position badLine badCol-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Position badLine badCol-        it "works after new line in bytestring" $ do-            let input = ["aaa\n", "aaa\n\n", "aaa", "aa\nb\naaaa"]-                badLine = 5-                badCol = 1-                parser = Data.Attoparsec.ByteString.Char8.endOfInput <|> (Data.Attoparsec.ByteString.Char8.notChar 'b' >> parser)-                sink = sinkParser (Position 1 1) parser-                sink' = sinkParserEither (Position 1 1) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Position badLine badCol-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Position badLine badCol-        it "works for first line" $ do-            let input = ["aab\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badLine = 1-                badCol = 3-                parser = Data.Attoparsec.Text.endOfInput <|> (Data.Attoparsec.Text.notChar 'b' >> parser)-                sink = sinkParser (Position 1 1) parser-                sink' = sinkParserEither (Position 1 1) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Position badLine badCol-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Position badLine badCol--    describe "conduitParser" $ do-        it "parses a repeated stream" $ do-            let input = ["aaa\n", "aaa\naaa\n", "aaa\n"]-                parser = Data.Attoparsec.Text.string "aaa" <* Data.Attoparsec.Text.endOfLine-                sink = conduitParserEither (Position 1 1) parser =$= CL.consume-            (Right ea) <- runExceptionT $ CL.sourceList input $$ sink-            let chk a = case a of-                          Left{} -> False-                          Right (_, xs) -> xs == "aaa"-                chkp l = (ParseDelta (Position l 1) (Position (l+1) 1))-            forM_ ea $ \ a -> a `shouldSatisfy` chk :: Expectation-            forM_ (zip ea [1..]) $ \ (Right (pos, _), l) -> pos `shouldBe` chkp l-            length ea `shouldBe` 4--        it "positions on first line" $ do-            results <- yield "hihihi\nhihi"-                $$ conduitParser (Position 1 1) (Data.Attoparsec.Text.string "\n" <|> Data.Attoparsec.Text.string "hi")-                =$ CL.consume-            let f (a, b, c, d, e) = (ParseDelta (Position a b) (Position c d), e)-            results `shouldBe` map f-                [ (1, 1, 1, 3, "hi")-                , (1, 3, 1, 5, "hi")-                , (1, 5, 1, 7, "hi")--                , (1, 7, 2, 1, "\n")--                , (2, 1, 2, 3, "hi")-                , (2, 3, 2, 5, "hi")-                ]
− test/HaskellWorks/Data/Conduit/Tokenize/Attoparsec/OffsetSpec.hs
@@ -1,164 +0,0 @@-{-# LANGUAGE CPP               #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TupleSections     #-}-{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}--module HaskellWorks.Data.Conduit.Tokenize.Attoparsec.OffsetSpec (spec) where--import           Control.Applicative                                  ((<|>))-import           Control.Exception                                    (fromException)-import           Control.Monad-import           Control.Monad.Trans.Resource                         (runExceptionT)-import qualified Data.Attoparsec.ByteString.Char8-import qualified Data.Attoparsec.Text-import           Data.Conduit-import qualified Data.Conduit.List                                    as CL-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec-import           HaskellWorks.Data.Conduit.Tokenize.Attoparsec.Offset-import           Test.Hspec--spec :: Spec-spec = describe "Data.Conduit.Tokenize.Attoparsec.OffsetSpec" $ do-    describe "error position" $ do-        it "works for text" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badOffset = 15-                parser = Data.Attoparsec.Text.endOfInput <|> (Data.Attoparsec.Text.notChar 'b' >> parser)-                sink = sinkParser (Offset 0) parser-                sink' = sinkParserEither (Offset 0) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Offset badOffset-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Offset badOffset-        it "works for bytestring" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badOffset = 15-                parser = Data.Attoparsec.ByteString.Char8.endOfInput <|> (Data.Attoparsec.ByteString.Char8.notChar 'b' >> parser)-                sink = sinkParser (Offset 0) parser-                sink' = sinkParserEither (Offset 0) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Offset badOffset-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Offset badOffset-        it "works in last chunk" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badOffset = 22-                parser = Data.Attoparsec.Text.char 'c' <|> (Data.Attoparsec.Text.anyChar >> parser)-                sink = sinkParser (Offset 0) parser-                sink' = sinkParserEither (Offset 0) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Offset badOffset-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Offset badOffset-        it "works in last chunk" $ do-            let input = ["aaa\na", "aaa\n\n", "aaa", "aa\n\naaaab"]-                badOffset = 22-                parser = Data.Attoparsec.Text.string "bc" <|> (Data.Attoparsec.Text.anyChar >> parser)-                sink = sinkParser (Offset 0) parser-                sink' = sinkParserEither (Offset 0) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Offset badOffset-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Offset badOffset-        it "works after new line in text" $ do-            let input = ["aaa\n", "aaa\n\n", "aaa", "aa\nb\naaaa"]-                badOffset = 15-                parser = Data.Attoparsec.Text.endOfInput <|> (Data.Attoparsec.Text.notChar 'b' >> parser)-                sink = sinkParser (Offset 0) parser-                sink' = sinkParserEither (Offset 0) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Offset badOffset-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Offset badOffset-        it "works after new line in bytestring" $ do-            let input = ["aaa\n", "aaa\n\n", "aaa", "aa\nb\naaaa"]-                badOffset = 15-                parser = Data.Attoparsec.ByteString.Char8.endOfInput <|> (Data.Attoparsec.ByteString.Char8.notChar 'b' >> parser)-                sink = sinkParser (Offset 0) parser-                sink' = sinkParserEither (Offset 0) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Offset badOffset-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Offset badOffset-        it "works for first line" $ do-            let input = ["aab\na", "aaa\n\n", "aaa", "aab\n\naaaa"]-                badOffset = 2-                parser = Data.Attoparsec.Text.endOfInput <|> (Data.Attoparsec.Text.notChar 'b' >> parser)-                sink = sinkParser (Offset 0) parser-                sink' = sinkParserEither (Offset 0) parser-            ea <- runExceptionT $ CL.sourceList input $$ sink-            case ea of-                Left e ->-                    case fromException e of-                        Just pe -> do-                            errorPosition pe `shouldBe` Offset badOffset-            ea' <- CL.sourceList input $$ sink'-            case ea' of-                Left pe ->-                    errorPosition pe `shouldBe` Offset badOffset--    describe "conduitParser" $ do-        it "parses a repeated stream" $ do-            let input = ["aaa\n", "aaa\naaa\n", "aaa\n"]-                parser = Data.Attoparsec.Text.string "aaa" <* Data.Attoparsec.Text.endOfLine-                sink = conduitParserEither (Offset 0) parser =$= CL.consume-            (Right ea) <- runExceptionT $ CL.sourceList input $$ sink-            let chk a = case a of-                          Left{} -> False-                          Right (_, xs) -> xs == "aaa"-                chkp l = (ParseDelta (Offset l) (Offset (l + 4)))-            forM_ ea $ \ a -> a `shouldSatisfy` chk :: Expectation-            forM_ (zip ea [0,4..]) $ \ (Right (pos2, _), l) -> pos2 `shouldBe` chkp l-            length ea `shouldBe` 4--        it "positions on first line" $ do-            results <- yield "hihihi\nhihi"-                $$ conduitParser (Offset 0) (Data.Attoparsec.Text.string "\n" <|> Data.Attoparsec.Text.string "hi")-                =$ CL.consume-            let f (b, d, e) = (ParseDelta (Offset b) (Offset d), e)-            results `shouldBe` map f-                [ (0,  2, "hi")-                , (2,  4, "hi")-                , (4,  6, "hi")--                , (6,  7, "\n")--                , (7,  9, "hi")-                , (9, 11, "hi")-                ]
+ test/HaskellWorks/Data/Json/Succinct/Cursor/InterestBitsSpec.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE FlexibleContexts  #-}+{-# LANGUAGE OverloadedStrings #-}+++module HaskellWorks.Data.Json.Succinct.Cursor.InterestBitsSpec(spec) where++import qualified Data.ByteString                                     as BS+import           Data.String+import qualified Data.Vector.Storable                                as DVS+import           Data.Word+import           HaskellWorks.Data.Bits.BitShown+import           HaskellWorks.Data.FromByteString+import           HaskellWorks.Data.Json.Succinct.Cursor.BlankedJson+import           HaskellWorks.Data.Json.Succinct.Cursor.InterestBits+import           Test.Hspec++{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}++interestBitsOf :: FromBlankedJson (JsonInterestBits a) => BS.ByteString -> a+interestBitsOf = getJsonInterestBits . fromBlankedJson . fromByteString++spec :: Spec+spec = describe "HaskellWorks.Data.Json.Succinct.Cursor.InterestBitsSpec" $ do+  it "Evaluating interest bits" $ do+    (interestBitsOf ""            :: BitShown (DVS.Vector Word8)) `shouldBe` fromString ""+    (interestBitsOf "  \n \r \t " :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "00000000"+    (interestBitsOf "1234 "       :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "10000000"+    (interestBitsOf "false "      :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "10000000"+    (interestBitsOf "true "       :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "10000000"+    (interestBitsOf "\"hello\" "  :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "10000000"+    (interestBitsOf "\"\\\"\" "   :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "10000000"+    (interestBitsOf "{ "          :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "10000000"+    (interestBitsOf "} "          :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "00000000"+    (interestBitsOf "[ "          :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "10000000"+    (interestBitsOf "] "          :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "00000000"+    (interestBitsOf ": "          :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "00000000"+    (interestBitsOf ", "          :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "00000000"+    (interestBitsOf "{{}}"        :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "11000000"+    (interestBitsOf " { { } } "   :: BitShown (DVS.Vector Word8)) `shouldBe` fromString "01010000 00000000"
− test/HaskellWorks/Data/Json/SuccinctSpec.hs
@@ -1,34 +0,0 @@-{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}-{-# LANGUAGE OverloadedStrings #-}--module HaskellWorks.Data.Json.SuccinctSpec where--import           Data.Maybe-import           HaskellWorks.Data.Bits.BitRead-import           HaskellWorks.Data.Conduit.Json-import           HaskellWorks.Data.Conduit.List-import           HaskellWorks.Data.Json.Succinct-import           Test.Hspec--{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}--spec :: Spec-spec = describe "HaskellWorks.Data.Json.SuccinctSpec" $ do-  describe "When running markerToByteString" $ do-    it "Marker at zero gives \"\1\"" $-      runListConduit markerToByteString [0] `shouldBe` ["\1"]-    it "Marker at [0, 1, 2, 3, 4, 5, 6, 7] gives \"\\255\"" $-      runListConduit markerToByteString [0, 1, 2, 3, 4, 5, 6, 7] `shouldBe` ["\255"]-    it "Marker at [0, 9, 18, 27, 36] gives \"\\255\"" $-      runListConduit markerToByteString [0, 9, 18, 27, 36] `shouldBe` ["\1", "\2", "\4", "\8", "\16"]-    it "Marker at [0, 9, 27, 36] gives \"\\255\"" $-      runListConduit markerToByteString [0, 9, 27, 36] `shouldBe` ["\1", "\2", "\0", "\8", "\16"]-    it "Marker at [0, 36] gives \"\\255\"" $-      runListConduit markerToByteString [0, 36] `shouldBe` ["\1", "\0", "\0", "\0", "\16"]-  describe "jsonToInterestBalancedParens" $ do-    it "produces the correct interest bits for {\"field\": 1}" $-      jsonToInterestBalancedParens ["{\"field\": 1}"] `shouldBe` fromJust (bitRead "110100")-  describe "jsonToInterestBits" $ do-    it "produces the correct interest bits for {\"field\": 1}" $-      jsonToInterestBits ["{\"field\": 1}"] `shouldBe` fromJust (bitRead "1100000000100000")