packages feed

PrimitiveArray 0.6.1.0 → 0.7.0.0

raw patch · 20 files changed

+679/−354 lines, 20 filesdep +hashabledep ~OrderedBitsdep ~aesondep ~vectorPVP ok

version bump matches the API change (PVP)

Dependencies added: hashable

Dependency ranges changed: OrderedBits, aeson, vector

API changes (from Hackage documentation)

- Data.PrimitiveArray.Class: instance (Functor m, Applicative m, Monad m, PrimMonad m, FreezeTables m ts, PrimArrayOps arr sh elm) => FreezeTables m (ts :. MutArr m (arr sh elm))
- Data.PrimitiveArray.Class: instance Applicative m => FreezeTables m Z
- Data.PrimitiveArray.Dense: instance (Binary sh, Binary e) => Binary (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (Binary sh, Binary e, Unbox e) => Binary (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance (Eq sh, Eq e) => Eq (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (Eq sh, Eq e, Unbox e) => Eq (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance (FromJSON sh, FromJSON e) => FromJSON (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (FromJSON sh, FromJSON e, Unbox e) => FromJSON (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance (Index sh, Unbox e, Unbox e') => PrimArrayMap Unboxed sh e e'
- Data.PrimitiveArray.Dense: instance (Index sh, Unbox elm) => MPrimArrayOps Unboxed sh elm
- Data.PrimitiveArray.Dense: instance (Index sh, Unbox elm) => PrimArrayOps Boxed sh elm
- Data.PrimitiveArray.Dense: instance (Index sh, Unbox elm) => PrimArrayOps Unboxed sh elm
- Data.PrimitiveArray.Dense: instance (NFData sh, NFData e) => NFData (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (Read sh, Read e) => Read (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (Read sh, Read e, Unbox e) => Read (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance (Serialize sh, Serialize e) => Serialize (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (Serialize sh, Serialize e, Unbox e) => Serialize (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance (Show sh, Show e) => Show (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (Show sh, Show e, Unbox e) => Show (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance (ToJSON sh, ToJSON e) => ToJSON (Boxed sh e)
- Data.PrimitiveArray.Dense: instance (ToJSON sh, ToJSON e, Unbox e) => ToJSON (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance Constructor C1_0Boxed
- Data.PrimitiveArray.Dense: instance Constructor C1_0Unboxed
- Data.PrimitiveArray.Dense: instance Datatype D1Boxed
- Data.PrimitiveArray.Dense: instance Datatype D1Unboxed
- Data.PrimitiveArray.Dense: instance Generic (Boxed sh e)
- Data.PrimitiveArray.Dense: instance Generic (Unboxed sh e)
- Data.PrimitiveArray.Dense: instance Index sh => MPrimArrayOps Boxed sh elm
- Data.PrimitiveArray.Dense: instance Index sh => PrimArrayMap Boxed sh e e'
- Data.PrimitiveArray.Dense: instance NFData sh => NFData (MutArr m (Boxed sh e))
- Data.PrimitiveArray.Dense: instance NFData sh => NFData (MutArr m (Unboxed sh e))
- Data.PrimitiveArray.Dense: instance NFData sh => NFData (Unboxed sh e)
- Data.PrimitiveArray.FillTables: instance (WriteCell m cs sh, Monad m, MPrimArrayOps arr sh a, PrimMonad m) => WriteCell m (cs :. (MutArr m (arr sh a), sh -> m a)) sh
- Data.PrimitiveArray.FillTables: instance Monad m => WriteCell m Z sh
- Data.PrimitiveArray.Index.Class: instance (Arbitrary a, Arbitrary b) => Arbitrary (a :. b)
- Data.PrimitiveArray.Index.Class: instance (Binary a, Binary b) => Binary (a :. b)
- Data.PrimitiveArray.Index.Class: instance (Binary a, Binary b) => Binary (a :> b)
- Data.PrimitiveArray.Index.Class: instance (Eq a, Eq b) => Eq (a :. b)
- Data.PrimitiveArray.Index.Class: instance (Eq a, Eq b) => Eq (a :> b)
- Data.PrimitiveArray.Index.Class: instance (FromJSON a, FromJSON b) => FromJSON (a :. b)
- Data.PrimitiveArray.Index.Class: instance (FromJSON a, FromJSON b) => FromJSON (a :> b)
- Data.PrimitiveArray.Index.Class: instance (Index zs, Index z) => Index (zs :. z)
- Data.PrimitiveArray.Index.Class: instance (Index zs, Index z) => Index (zs :> z)
- Data.PrimitiveArray.Index.Class: instance (NFData a, NFData b) => NFData (a :. b)
- Data.PrimitiveArray.Index.Class: instance (NFData a, NFData b) => NFData (a :> b)
- Data.PrimitiveArray.Index.Class: instance (Ord a, Ord b) => Ord (a :. b)
- Data.PrimitiveArray.Index.Class: instance (Ord a, Ord b) => Ord (a :> b)
- Data.PrimitiveArray.Index.Class: instance (Read a, Read b) => Read (a :. b)
- Data.PrimitiveArray.Index.Class: instance (Read a, Read b) => Read (a :> b)
- Data.PrimitiveArray.Index.Class: instance (Serialize a, Serialize b) => Serialize (a :. b)
- Data.PrimitiveArray.Index.Class: instance (Serialize a, Serialize b) => Serialize (a :> b)
- Data.PrimitiveArray.Index.Class: instance (Show a, Show b) => Show (a :. b)
- Data.PrimitiveArray.Index.Class: instance (Show a, Show b) => Show (a :> b)
- Data.PrimitiveArray.Index.Class: instance (ToJSON a, ToJSON b) => ToJSON (a :. b)
- Data.PrimitiveArray.Index.Class: instance (ToJSON a, ToJSON b) => ToJSON (a :> b)
- Data.PrimitiveArray.Index.Class: instance (Unbox a0, Unbox b0) => MVector MVector (a0 :. b0)
- Data.PrimitiveArray.Index.Class: instance (Unbox a0, Unbox b0) => MVector MVector (a0 :> b0)
- Data.PrimitiveArray.Index.Class: instance (Unbox a0, Unbox b0) => Unbox (a0 :. b0)
- Data.PrimitiveArray.Index.Class: instance (Unbox a0, Unbox b0) => Unbox (a0 :> b0)
- Data.PrimitiveArray.Index.Class: instance (Unbox a0, Unbox b0) => Vector Vector (a0 :. b0)
- Data.PrimitiveArray.Index.Class: instance (Unbox a0, Unbox b0) => Vector Vector (a0 :> b0)
- Data.PrimitiveArray.Index.Class: instance Arbitrary Z
- Data.PrimitiveArray.Index.Class: instance Binary Z
- Data.PrimitiveArray.Index.Class: instance Constructor C1_0:.
- Data.PrimitiveArray.Index.Class: instance Constructor C1_0:>
- Data.PrimitiveArray.Index.Class: instance Constructor C1_0Z
- Data.PrimitiveArray.Index.Class: instance Datatype D1:.
- Data.PrimitiveArray.Index.Class: instance Datatype D1:>
- Data.PrimitiveArray.Index.Class: instance Datatype D1Z
- Data.PrimitiveArray.Index.Class: instance Eq Z
- Data.PrimitiveArray.Index.Class: instance FromJSON Z
- Data.PrimitiveArray.Index.Class: instance Generic (a :. b)
- Data.PrimitiveArray.Index.Class: instance Generic (a :> b)
- Data.PrimitiveArray.Index.Class: instance Generic Z
- Data.PrimitiveArray.Index.Class: instance Index Z
- Data.PrimitiveArray.Index.Class: instance IndexStream Z
- Data.PrimitiveArray.Index.Class: instance MVector MVector Z
- Data.PrimitiveArray.Index.Class: instance NFData Z
- Data.PrimitiveArray.Index.Class: instance Ord Z
- Data.PrimitiveArray.Index.Class: instance Read Z
- Data.PrimitiveArray.Index.Class: instance Serialize Z
- Data.PrimitiveArray.Index.Class: instance Show Z
- Data.PrimitiveArray.Index.Class: instance ToJSON Z
- Data.PrimitiveArray.Index.Class: instance Unbox Z
- Data.PrimitiveArray.Index.Class: instance Vector Vector Z
- Data.PrimitiveArray.Index.Complement: C :: z -> Complement z
- Data.PrimitiveArray.Index.Complement: instance Arbitrary z => Arbitrary (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Binary z => Binary (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Constructor C1_0Complement
- Data.PrimitiveArray.Index.Complement: instance Datatype D1Complement
- Data.PrimitiveArray.Index.Complement: instance Eq z => Eq (Complement z)
- Data.PrimitiveArray.Index.Complement: instance FromJSON z => FromJSON (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Generic (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Index i => Index (Complement i)
- Data.PrimitiveArray.Index.Complement: instance IndexStream i => IndexStream (Complement i)
- Data.PrimitiveArray.Index.Complement: instance NFData z => NFData (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Ord z => Ord (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Read z => Read (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Selector S1_0_0Complement
- Data.PrimitiveArray.Index.Complement: instance Serialize z => Serialize (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Show z => Show (Complement z)
- Data.PrimitiveArray.Index.Complement: instance ToJSON z => ToJSON (Complement z)
- Data.PrimitiveArray.Index.Complement: instance Unbox z0 => MVector MVector (Complement z0)
- Data.PrimitiveArray.Index.Complement: instance Unbox z0 => Unbox (Complement z0)
- Data.PrimitiveArray.Index.Complement: instance Unbox z0 => Vector Vector (Complement z0)
- Data.PrimitiveArray.Index.Complement: newtype Complement z
- Data.PrimitiveArray.Index.Complement: unC :: Complement z -> z
- Data.PrimitiveArray.Index.Int: instance Index Int
- Data.PrimitiveArray.Index.Int: instance IndexStream Int
- Data.PrimitiveArray.Index.Int: instance IndexStream z => IndexStream (z :. Int)
- Data.PrimitiveArray.Index.Outside: O :: z -> Outside z
- Data.PrimitiveArray.Index.Outside: instance Arbitrary z => Arbitrary (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Binary z => Binary (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Constructor C1_0Outside
- Data.PrimitiveArray.Index.Outside: instance Datatype D1Outside
- Data.PrimitiveArray.Index.Outside: instance Eq z => Eq (Outside z)
- Data.PrimitiveArray.Index.Outside: instance FromJSON z => FromJSON (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Generic (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Index i => Index (Outside i)
- Data.PrimitiveArray.Index.Outside: instance IndexStream i => IndexStream (Outside i)
- Data.PrimitiveArray.Index.Outside: instance NFData z => NFData (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Ord z => Ord (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Read z => Read (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Selector S1_0_0Outside
- Data.PrimitiveArray.Index.Outside: instance Serialize z => Serialize (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Show z => Show (Outside z)
- Data.PrimitiveArray.Index.Outside: instance ToJSON z => ToJSON (Outside z)
- Data.PrimitiveArray.Index.Outside: instance Unbox z0 => MVector MVector (Outside z0)
- Data.PrimitiveArray.Index.Outside: instance Unbox z0 => Unbox (Outside z0)
- Data.PrimitiveArray.Index.Outside: instance Unbox z0 => Vector Vector (Outside z0)
- Data.PrimitiveArray.Index.Outside: newtype Outside z
- Data.PrimitiveArray.Index.Outside: unO :: Outside z -> z
- Data.PrimitiveArray.Index.PhantomInt: getPInt :: PInt p -> Int
- Data.PrimitiveArray.Index.PhantomInt: instance Binary (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Constructor C1_0PInt
- Data.PrimitiveArray.Index.PhantomInt: instance Data p => Data (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Datatype D1PInt
- Data.PrimitiveArray.Index.PhantomInt: instance Enum (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Eq (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance FromJSON (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Generic (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Index (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance IndexStream (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance IndexStream z => IndexStream (z :. PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Integral (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Ix (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance MVector MVector (PInt p0)
- Data.PrimitiveArray.Index.PhantomInt: instance NFData (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Num (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Ord (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Read (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Real (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Selector S1_0_0PInt
- Data.PrimitiveArray.Index.PhantomInt: instance Serialize (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Show (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance ToJSON (PInt p)
- Data.PrimitiveArray.Index.PhantomInt: instance Typeable PInt
- Data.PrimitiveArray.Index.PhantomInt: instance Unbox (PInt p0)
- Data.PrimitiveArray.Index.PhantomInt: instance Vector Vector (PInt p0)
- Data.PrimitiveArray.Index.Point: fromPointL :: PointL -> Int
- Data.PrimitiveArray.Index.Point: fromPointR :: PointR -> Int
- Data.PrimitiveArray.Index.Point: instance Arbitrary PointL
- Data.PrimitiveArray.Index.Point: instance Binary PointL
- Data.PrimitiveArray.Index.Point: instance Binary PointR
- Data.PrimitiveArray.Index.Point: instance Constructor C1_0PointL
- Data.PrimitiveArray.Index.Point: instance Constructor C1_0PointR
- Data.PrimitiveArray.Index.Point: instance Datatype D1PointL
- Data.PrimitiveArray.Index.Point: instance Datatype D1PointR
- Data.PrimitiveArray.Index.Point: instance Eq PointL
- Data.PrimitiveArray.Index.Point: instance Eq PointR
- Data.PrimitiveArray.Index.Point: instance FromJSON PointL
- Data.PrimitiveArray.Index.Point: instance FromJSON PointR
- Data.PrimitiveArray.Index.Point: instance Generic PointL
- Data.PrimitiveArray.Index.Point: instance Generic PointR
- Data.PrimitiveArray.Index.Point: instance Index PointL
- Data.PrimitiveArray.Index.Point: instance Index PointR
- Data.PrimitiveArray.Index.Point: instance IndexStream PointL
- Data.PrimitiveArray.Index.Point: instance IndexStream z => IndexStream (z :. PointL)
- Data.PrimitiveArray.Index.Point: instance MVector MVector PointL
- Data.PrimitiveArray.Index.Point: instance MVector MVector PointR
- Data.PrimitiveArray.Index.Point: instance NFData PointL
- Data.PrimitiveArray.Index.Point: instance NFData PointR
- Data.PrimitiveArray.Index.Point: instance Read PointL
- Data.PrimitiveArray.Index.Point: instance Read PointR
- Data.PrimitiveArray.Index.Point: instance Selector S1_0_0PointL
- Data.PrimitiveArray.Index.Point: instance Selector S1_0_0PointR
- Data.PrimitiveArray.Index.Point: instance Serialize PointL
- Data.PrimitiveArray.Index.Point: instance Serialize PointR
- Data.PrimitiveArray.Index.Point: instance Show PointL
- Data.PrimitiveArray.Index.Point: instance Show PointR
- Data.PrimitiveArray.Index.Point: instance ToJSON PointL
- Data.PrimitiveArray.Index.Point: instance ToJSON PointR
- Data.PrimitiveArray.Index.Point: instance Unbox PointL
- Data.PrimitiveArray.Index.Point: instance Unbox PointR
- Data.PrimitiveArray.Index.Point: instance Vector Vector PointL
- Data.PrimitiveArray.Index.Point: instance Vector Vector PointR
- Data.PrimitiveArray.Index.Set: getBitSet :: BitSet -> Int
- Data.PrimitiveArray.Index.Set: getFixed :: Fixed t -> !t
- Data.PrimitiveArray.Index.Set: getFixedMask :: Fixed t -> (Mask t)
- Data.PrimitiveArray.Index.Set: getIter :: Interface t -> Int
- Data.PrimitiveArray.Index.Set: instance (Arbitrary t, Arbitrary (Mask t)) => Arbitrary (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Eq t, Eq (Mask t)) => Eq (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Generic t, Generic (Mask t)) => Generic (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Generic t, Generic (Mask t), Binary t, Binary (Mask t)) => Binary (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Generic t, Generic (Mask t), Serialize t, Serialize (Mask t)) => Serialize (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Ord t, Ord (Mask t)) => Ord (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Read t, Read (Mask t)) => Read (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Show t, Show (Mask t)) => Show (Fixed t)
- Data.PrimitiveArray.Index.Set: instance (Unbox t0, Unbox (Mask t0)) => MVector MVector (Fixed t0)
- Data.PrimitiveArray.Index.Set: instance (Unbox t0, Unbox (Mask t0)) => Unbox (Fixed t0)
- Data.PrimitiveArray.Index.Set: instance (Unbox t0, Unbox (Mask t0)) => Vector Vector (Fixed t0)
- Data.PrimitiveArray.Index.Set: instance ApplyMask ((BitSet :> Interface i) :> Interface j)
- Data.PrimitiveArray.Index.Set: instance ApplyMask (BitSet :> Interface i)
- Data.PrimitiveArray.Index.Set: instance ApplyMask BitSet
- Data.PrimitiveArray.Index.Set: instance Arbitrary ((BitSet :> Interface i) :> Interface j)
- Data.PrimitiveArray.Index.Set: instance Arbitrary (BitSet :> Interface i)
- Data.PrimitiveArray.Index.Set: instance Arbitrary BitSet
- Data.PrimitiveArray.Index.Set: instance Binary (Interface t)
- Data.PrimitiveArray.Index.Set: instance Binary BitSet
- Data.PrimitiveArray.Index.Set: instance Bits BitSet
- Data.PrimitiveArray.Index.Set: instance Constructor C1_0BitSet
- Data.PrimitiveArray.Index.Set: instance Constructor C1_0Fixed
- Data.PrimitiveArray.Index.Set: instance Constructor C1_0Interface
- Data.PrimitiveArray.Index.Set: instance Datatype D1BitSet
- Data.PrimitiveArray.Index.Set: instance Datatype D1Fixed
- Data.PrimitiveArray.Index.Set: instance Datatype D1Interface
- Data.PrimitiveArray.Index.Set: instance Eq (Interface t)
- Data.PrimitiveArray.Index.Set: instance Eq BitSet
- Data.PrimitiveArray.Index.Set: instance FiniteBits BitSet
- Data.PrimitiveArray.Index.Set: instance FromJSON (Interface t)
- Data.PrimitiveArray.Index.Set: instance FromJSON BitSet
- Data.PrimitiveArray.Index.Set: instance Generic (Interface t)
- Data.PrimitiveArray.Index.Set: instance Generic BitSet
- Data.PrimitiveArray.Index.Set: instance Index (Interface i)
- Data.PrimitiveArray.Index.Set: instance Index BitSet
- Data.PrimitiveArray.Index.Set: instance IndexStream z => IndexStream (z :. ((BitSet :> Interface i) :> Interface j))
- Data.PrimitiveArray.Index.Set: instance IndexStream z => IndexStream (z :. (BitSet :> Interface i))
- Data.PrimitiveArray.Index.Set: instance IndexStream z => IndexStream (z :. BitSet)
- Data.PrimitiveArray.Index.Set: instance MVector MVector (Interface t0)
- Data.PrimitiveArray.Index.Set: instance MVector MVector BitSet
- Data.PrimitiveArray.Index.Set: instance NFData (Fixed t)
- Data.PrimitiveArray.Index.Set: instance NFData (Interface t)
- Data.PrimitiveArray.Index.Set: instance NFData BitSet
- Data.PrimitiveArray.Index.Set: instance Num (Interface t)
- Data.PrimitiveArray.Index.Set: instance Num BitSet
- Data.PrimitiveArray.Index.Set: instance Ord (Interface t)
- Data.PrimitiveArray.Index.Set: instance Ord BitSet
- Data.PrimitiveArray.Index.Set: instance Ranked BitSet
- Data.PrimitiveArray.Index.Set: instance Read (Interface t)
- Data.PrimitiveArray.Index.Set: instance Read BitSet
- Data.PrimitiveArray.Index.Set: instance Selector S1_0_0BitSet
- Data.PrimitiveArray.Index.Set: instance Selector S1_0_0Fixed
- Data.PrimitiveArray.Index.Set: instance Selector S1_0_0Interface
- Data.PrimitiveArray.Index.Set: instance Selector S1_0_1Fixed
- Data.PrimitiveArray.Index.Set: instance Serialize (Interface t)
- Data.PrimitiveArray.Index.Set: instance Serialize BitSet
- Data.PrimitiveArray.Index.Set: instance SetPredSucc ((BitSet :> Interface i) :> Interface j)
- Data.PrimitiveArray.Index.Set: instance SetPredSucc (BitSet :> Interface i)
- Data.PrimitiveArray.Index.Set: instance SetPredSucc (Fixed ((BitSet :> Interface i) :> Interface j))
- Data.PrimitiveArray.Index.Set: instance SetPredSucc (Fixed (BitSet :> Interface i))
- Data.PrimitiveArray.Index.Set: instance SetPredSucc (Fixed BitSet)
- Data.PrimitiveArray.Index.Set: instance SetPredSucc BitSet
- Data.PrimitiveArray.Index.Set: instance Show (Interface t)
- Data.PrimitiveArray.Index.Set: instance Show BitSet
- Data.PrimitiveArray.Index.Set: instance ToJSON (Interface t)
- Data.PrimitiveArray.Index.Set: instance ToJSON BitSet
- Data.PrimitiveArray.Index.Set: instance Unbox (Interface t0)
- Data.PrimitiveArray.Index.Set: instance Unbox BitSet
- Data.PrimitiveArray.Index.Set: instance Vector Vector (Interface t0)
- Data.PrimitiveArray.Index.Set: instance Vector Vector BitSet
- Data.PrimitiveArray.Index.Set: type BS1I i = BitSet :> Interface i
- Data.PrimitiveArray.Index.Set: type BS2I i j = (BitSet :> Interface i) :> Interface j
- Data.PrimitiveArray.Index.Subword: fromSubword :: Subword -> (Int :. Int)
- Data.PrimitiveArray.Index.Subword: instance Arbitrary Subword
- Data.PrimitiveArray.Index.Subword: instance Binary Subword
- Data.PrimitiveArray.Index.Subword: instance Constructor C1_0Subword
- Data.PrimitiveArray.Index.Subword: instance Datatype D1Subword
- Data.PrimitiveArray.Index.Subword: instance Eq Subword
- Data.PrimitiveArray.Index.Subword: instance FromJSON Subword
- Data.PrimitiveArray.Index.Subword: instance Generic Subword
- Data.PrimitiveArray.Index.Subword: instance Index Subword
- Data.PrimitiveArray.Index.Subword: instance IndexStream Subword
- Data.PrimitiveArray.Index.Subword: instance IndexStream z => IndexStream (z :. Subword)
- Data.PrimitiveArray.Index.Subword: instance MVector MVector Subword
- Data.PrimitiveArray.Index.Subword: instance NFData Subword
- Data.PrimitiveArray.Index.Subword: instance Ord Subword
- Data.PrimitiveArray.Index.Subword: instance Read Subword
- Data.PrimitiveArray.Index.Subword: instance Selector S1_0_0Subword
- Data.PrimitiveArray.Index.Subword: instance Serialize Subword
- Data.PrimitiveArray.Index.Subword: instance Show Subword
- Data.PrimitiveArray.Index.Subword: instance ToJSON Subword
- Data.PrimitiveArray.Index.Subword: instance Unbox Subword
- Data.PrimitiveArray.Index.Subword: instance Vector Vector Subword
+ Data.PrimitiveArray.Class: instance (GHC.Base.Functor m, GHC.Base.Applicative m, GHC.Base.Monad m, Control.Monad.Primitive.PrimMonad m, Data.PrimitiveArray.Class.FreezeTables m ts, Data.PrimitiveArray.Class.PrimArrayOps arr sh elm) => Data.PrimitiveArray.Class.FreezeTables m (ts Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Class.MutArr m (arr sh elm))
+ Data.PrimitiveArray.Class: instance GHC.Base.Applicative m => Data.PrimitiveArray.Class.FreezeTables m Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Dense: instance (Control.DeepSeq.NFData sh, Control.DeepSeq.NFData e) => Control.DeepSeq.NFData (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Aeson.Types.Class.FromJSON sh, Data.Aeson.Types.Class.FromJSON e) => Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Aeson.Types.Class.FromJSON sh, Data.Aeson.Types.Class.FromJSON e, Data.Vector.Unboxed.Base.Unbox e) => Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Aeson.Types.Class.ToJSON sh, Data.Aeson.Types.Class.ToJSON e) => Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Aeson.Types.Class.ToJSON sh, Data.Aeson.Types.Class.ToJSON e, Data.Vector.Unboxed.Base.Unbox e) => Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Binary.Class.Binary sh, Data.Binary.Class.Binary e) => Data.Binary.Class.Binary (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Binary.Class.Binary sh, Data.Binary.Class.Binary e, Data.Vector.Unboxed.Base.Unbox e) => Data.Binary.Class.Binary (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Hashable.Class.Hashable sh, Data.Hashable.Class.Hashable e, Data.Hashable.Class.Hashable (Data.Vector.Unboxed.Base.Vector e), Data.Vector.Unboxed.Base.Unbox e) => Data.Hashable.Class.Hashable (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Hashable.Class.Hashable sh, Data.Hashable.Class.Hashable e, Data.Hashable.Class.Hashable (Data.Vector.Vector e)) => Data.Hashable.Class.Hashable (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.PrimitiveArray.Index.Class.Index sh, Data.Vector.Unboxed.Base.Unbox e, Data.Vector.Unboxed.Base.Unbox e') => Data.PrimitiveArray.Class.PrimArrayMap Data.PrimitiveArray.Dense.Unboxed sh e e'
+ Data.PrimitiveArray.Dense: instance (Data.PrimitiveArray.Index.Class.Index sh, Data.Vector.Unboxed.Base.Unbox elm) => Data.PrimitiveArray.Class.MPrimArrayOps Data.PrimitiveArray.Dense.Unboxed sh elm
+ Data.PrimitiveArray.Dense: instance (Data.PrimitiveArray.Index.Class.Index sh, Data.Vector.Unboxed.Base.Unbox elm) => Data.PrimitiveArray.Class.PrimArrayOps Data.PrimitiveArray.Dense.Unboxed sh elm
+ Data.PrimitiveArray.Dense: instance (Data.Serialize.Serialize sh, Data.Serialize.Serialize e) => Data.Serialize.Serialize (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (Data.Serialize.Serialize sh, Data.Serialize.Serialize e, Data.Vector.Unboxed.Base.Unbox e) => Data.Serialize.Serialize (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance (GHC.Classes.Eq sh, GHC.Classes.Eq e) => GHC.Classes.Eq (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (GHC.Classes.Eq sh, GHC.Classes.Eq e, Data.Vector.Unboxed.Base.Unbox e) => GHC.Classes.Eq (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance (GHC.Read.Read sh, GHC.Read.Read e) => GHC.Read.Read (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (GHC.Read.Read sh, GHC.Read.Read e, Data.Vector.Unboxed.Base.Unbox e) => GHC.Read.Read (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance (GHC.Show.Show sh, GHC.Show.Show e) => GHC.Show.Show (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance (GHC.Show.Show sh, GHC.Show.Show e, Data.Vector.Unboxed.Base.Unbox e) => GHC.Show.Show (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance Control.DeepSeq.NFData sh => Control.DeepSeq.NFData (Data.PrimitiveArray.Class.MutArr m (Data.PrimitiveArray.Dense.Boxed sh e))
+ Data.PrimitiveArray.Dense: instance Control.DeepSeq.NFData sh => Control.DeepSeq.NFData (Data.PrimitiveArray.Class.MutArr m (Data.PrimitiveArray.Dense.Unboxed sh e))
+ Data.PrimitiveArray.Dense: instance Control.DeepSeq.NFData sh => Control.DeepSeq.NFData (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.Dense: instance Data.PrimitiveArray.Index.Class.Index sh => Data.PrimitiveArray.Class.MPrimArrayOps Data.PrimitiveArray.Dense.Boxed sh elm
+ Data.PrimitiveArray.Dense: instance Data.PrimitiveArray.Index.Class.Index sh => Data.PrimitiveArray.Class.PrimArrayMap Data.PrimitiveArray.Dense.Boxed sh e e'
+ Data.PrimitiveArray.Dense: instance Data.PrimitiveArray.Index.Class.Index sh => Data.PrimitiveArray.Class.PrimArrayOps Data.PrimitiveArray.Dense.Boxed sh elm
+ Data.PrimitiveArray.Dense: instance GHC.Generics.Constructor Data.PrimitiveArray.Dense.C1_0Boxed
+ Data.PrimitiveArray.Dense: instance GHC.Generics.Constructor Data.PrimitiveArray.Dense.C1_0Unboxed
+ Data.PrimitiveArray.Dense: instance GHC.Generics.Datatype Data.PrimitiveArray.Dense.D1Boxed
+ Data.PrimitiveArray.Dense: instance GHC.Generics.Datatype Data.PrimitiveArray.Dense.D1Unboxed
+ Data.PrimitiveArray.Dense: instance GHC.Generics.Generic (Data.PrimitiveArray.Dense.Boxed sh e)
+ Data.PrimitiveArray.Dense: instance GHC.Generics.Generic (Data.PrimitiveArray.Dense.Unboxed sh e)
+ Data.PrimitiveArray.FillTables: instance (Data.PrimitiveArray.FillTables.WriteCell m cs sh, GHC.Base.Monad m, Data.PrimitiveArray.Class.MPrimArrayOps arr sh a, Control.Monad.Primitive.PrimMonad m) => Data.PrimitiveArray.FillTables.WriteCell m (cs Data.PrimitiveArray.Index.Class.:. (Data.PrimitiveArray.Class.MutArr m (arr sh a), sh -> m a)) sh
+ Data.PrimitiveArray.FillTables: instance GHC.Base.Monad m => Data.PrimitiveArray.FillTables.WriteCell m Data.PrimitiveArray.Index.Class.Z sh
+ Data.PrimitiveArray.Index.Class: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Aeson.Types.Class.FromJSON a, Data.Aeson.Types.Class.FromJSON b) => Data.Aeson.Types.Class.FromJSON (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Aeson.Types.Class.FromJSON a, Data.Aeson.Types.Class.FromJSON b) => Data.Aeson.Types.Class.FromJSON (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Aeson.Types.Class.ToJSON a, Data.Aeson.Types.Class.ToJSON b) => Data.Aeson.Types.Class.ToJSON (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Aeson.Types.Class.ToJSON a, Data.Aeson.Types.Class.ToJSON b) => Data.Aeson.Types.Class.ToJSON (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Binary.Class.Binary a, Data.Binary.Class.Binary b) => Data.Binary.Class.Binary (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Binary.Class.Binary a, Data.Binary.Class.Binary b) => Data.Binary.Class.Binary (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b) => Data.Hashable.Class.Hashable (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b) => Data.Hashable.Class.Hashable (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (Data.PrimitiveArray.Index.Class.Index zs, Data.PrimitiveArray.Index.Class.Index z) => Data.PrimitiveArray.Index.Class.Index (zs Data.PrimitiveArray.Index.Class.:. z)
+ Data.PrimitiveArray.Index.Class: instance (Data.PrimitiveArray.Index.Class.Index zs, Data.PrimitiveArray.Index.Class.Index z) => Data.PrimitiveArray.Index.Class.Index (zs Data.PrimitiveArray.Index.Class.:> z)
+ Data.PrimitiveArray.Index.Class: instance (Data.Serialize.Serialize a, Data.Serialize.Serialize b) => Data.Serialize.Serialize (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Serialize.Serialize a, Data.Serialize.Serialize b) => Data.Serialize.Serialize (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (a0 Data.PrimitiveArray.Index.Class.:. b0)
+ Data.PrimitiveArray.Index.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (a0 Data.PrimitiveArray.Index.Class.:> b0)
+ Data.PrimitiveArray.Index.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (a0 Data.PrimitiveArray.Index.Class.:. b0)
+ Data.PrimitiveArray.Index.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (a0 Data.PrimitiveArray.Index.Class.:> b0)
+ Data.PrimitiveArray.Index.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Unboxed.Base.Unbox (a0 Data.PrimitiveArray.Index.Class.:. b0)
+ Data.PrimitiveArray.Index.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Unboxed.Base.Unbox (a0 Data.PrimitiveArray.Index.Class.:> b0)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Read.Read a, GHC.Read.Read b) => GHC.Read.Read (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Read.Read a, GHC.Read.Read b) => GHC.Read.Read (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance (Test.QuickCheck.Arbitrary.Arbitrary a, Test.QuickCheck.Arbitrary.Arbitrary b) => Test.QuickCheck.Arbitrary.Arbitrary (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance Control.DeepSeq.NFData Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Aeson.Types.Class.FromJSON Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Aeson.Types.Class.ToJSON Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Binary.Class.Binary Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Hashable.Class.Hashable Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.PrimitiveArray.Index.Class.Index Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.PrimitiveArray.Index.Class.IndexStream Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Serialize.Serialize Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Data.Vector.Unboxed.Base.Unbox Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance GHC.Classes.Eq Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance GHC.Classes.Ord Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Class.C1_0:.
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Class.C1_0:>
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Class.C1_0Z
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Class.D1:.
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Class.D1:>
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Class.D1Z
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Generic (a Data.PrimitiveArray.Index.Class.:. b)
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Generic (a Data.PrimitiveArray.Index.Class.:> b)
+ Data.PrimitiveArray.Index.Class: instance GHC.Generics.Generic Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance GHC.Read.Read Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance GHC.Show.Show Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.Class: instance Test.QuickCheck.Arbitrary.Arbitrary Data.PrimitiveArray.Index.Class.Z
+ Data.PrimitiveArray.Index.IOC: data C
+ Data.PrimitiveArray.Index.IOC: data I
+ Data.PrimitiveArray.Index.IOC: data O
+ Data.PrimitiveArray.Index.Int: instance Data.PrimitiveArray.Index.Class.Index GHC.Types.Int
+ Data.PrimitiveArray.Index.Int: instance Data.PrimitiveArray.Index.Class.IndexStream GHC.Types.Int
+ Data.PrimitiveArray.Index.Int: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. GHC.Types.Int)
+ Data.PrimitiveArray.Index.PhantomInt: [getPInt] :: PInt t p -> Int
+ Data.PrimitiveArray.Index.PhantomInt: instance (Data.Data.Data t, Data.Data.Data p) => Data.Data.Data (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Binary.Class.Binary (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.PhantomInt.PInt Data.PrimitiveArray.Index.IOC.C p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.PhantomInt.PInt Data.PrimitiveArray.Index.IOC.I p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.PhantomInt.PInt Data.PrimitiveArray.Index.IOC.O p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.PhantomInt.PInt Data.PrimitiveArray.Index.IOC.C p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.PhantomInt.PInt Data.PrimitiveArray.Index.IOC.I p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.PhantomInt.PInt Data.PrimitiveArray.Index.IOC.O p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Serialize.Serialize (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.PhantomInt.PInt t0 p0)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.PhantomInt.PInt t0 p0)
+ Data.PrimitiveArray.Index.PhantomInt: instance Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.PhantomInt.PInt t0 p0)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Arr.Ix (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Classes.Eq (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Classes.Ord (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Enum.Enum (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.PhantomInt.C1_0PInt
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.PhantomInt.D1PInt
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Generics.Generic (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Generics.Selector Data.PrimitiveArray.Index.PhantomInt.S1_0_0PInt
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Num.Num (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Read.Read (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Real.Integral (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Real.Real (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: instance GHC.Show.Show (Data.PrimitiveArray.Index.PhantomInt.PInt t p)
+ Data.PrimitiveArray.Index.PhantomInt: pIntC :: Int -> PInt C p
+ Data.PrimitiveArray.Index.PhantomInt: pIntI :: Int -> PInt I p
+ Data.PrimitiveArray.Index.PhantomInt: pIntO :: Int -> PInt O p
+ Data.PrimitiveArray.Index.PhantomInt: streamDownMk :: Monad m => t -> t2 -> t1 -> m (t1, t2)
+ Data.PrimitiveArray.Index.PhantomInt: streamDownStep :: (Monad m, Num t2, Ord t2) => t2 -> t -> (t1, t2) -> m (Step (t1, t2) ((:.) t1 t2))
+ Data.PrimitiveArray.Index.PhantomInt: streamUpMk :: Monad m => t2 -> t -> t1 -> m (t1, t2)
+ Data.PrimitiveArray.Index.PhantomInt: streamUpStep :: (Monad m, Num t2, Ord t2) => t -> t2 -> (t1, t2) -> m (Step (t1, t2) ((:.) t1 t2))
+ Data.PrimitiveArray.Index.Point: [fromPointL] :: PointL t -> Int
+ Data.PrimitiveArray.Index.Point: [fromPointR] :: PointR t -> Int
+ Data.PrimitiveArray.Index.Point: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Class.Z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Point.PointL t) => Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Point.PointL Data.PrimitiveArray.Index.IOC.C)
+ Data.PrimitiveArray.Index.Point: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Point.PointL Data.PrimitiveArray.Index.IOC.I)
+ Data.PrimitiveArray.Index.Point: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Point.PointL Data.PrimitiveArray.Index.IOC.O)
+ Data.PrimitiveArray.Index.Point: instance Data.Serialize.Serialize (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance Data.Serialize.Serialize (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.Point.PointL t0)
+ Data.PrimitiveArray.Index.Point: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.Point.PointR t0)
+ Data.PrimitiveArray.Index.Point: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.Point.PointL t0)
+ Data.PrimitiveArray.Index.Point: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.Point.PointR t0)
+ Data.PrimitiveArray.Index.Point: instance Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Point.PointL t0)
+ Data.PrimitiveArray.Index.Point: instance Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Point.PointR t0)
+ Data.PrimitiveArray.Index.Point: instance GHC.Classes.Eq (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance GHC.Classes.Eq (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Point.C1_0PointL
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Point.C1_0PointR
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Point.D1PointL
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Point.D1PointR
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Generic (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Generic (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Selector Data.PrimitiveArray.Index.Point.S1_0_0PointL
+ Data.PrimitiveArray.Index.Point: instance GHC.Generics.Selector Data.PrimitiveArray.Index.Point.S1_0_0PointR
+ Data.PrimitiveArray.Index.Point: instance GHC.Read.Read (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance GHC.Read.Read (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance GHC.Show.Show (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: instance GHC.Show.Show (Data.PrimitiveArray.Index.Point.PointR t)
+ Data.PrimitiveArray.Index.Point: instance Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Point.PointL t)
+ Data.PrimitiveArray.Index.Point: pointLC :: Int -> PointL C
+ Data.PrimitiveArray.Index.Point: pointLI :: Int -> PointL I
+ Data.PrimitiveArray.Index.Point: pointLO :: Int -> PointL O
+ Data.PrimitiveArray.Index.Point: streamDownMk :: Monad m => t1 -> t -> m (t, t1)
+ Data.PrimitiveArray.Index.Point: streamDownStep :: Monad m => Int -> (t1, Int) -> m (Step (t1, Int) ((:.) t1 (PointL t)))
+ Data.PrimitiveArray.Index.Point: streamUpMk :: Monad m => t1 -> t -> m (t, t1)
+ Data.PrimitiveArray.Index.Point: streamUpStep :: Monad m => Int -> (t1, Int) -> m (Step (t1, Int) ((:.) t1 (PointL t)))
+ Data.PrimitiveArray.Index.Set: BS1 :: !(BitSet t) -> !(Interface i) -> BS1 i t
+ Data.PrimitiveArray.Index.Set: BS2 :: !(BitSet t) -> !(Interface i) -> !(Interface j) -> BS2 i j t
+ Data.PrimitiveArray.Index.Set: [getBitSet] :: BitSet t -> Int
+ Data.PrimitiveArray.Index.Set: [getFixedMask] :: Fixed t -> (Mask t)
+ Data.PrimitiveArray.Index.Set: [getFixed] :: Fixed t -> !t
+ Data.PrimitiveArray.Index.Set: [getIter] :: Interface t -> Int
+ Data.PrimitiveArray.Index.Set: bitSetC :: Int -> BitSet C
+ Data.PrimitiveArray.Index.Set: bitSetI :: Int -> BitSet I
+ Data.PrimitiveArray.Index.Set: bitSetO :: Int -> BitSet O
+ Data.PrimitiveArray.Index.Set: data BS1 i t
+ Data.PrimitiveArray.Index.Set: data BS2 i j t
+ Data.PrimitiveArray.Index.Set: instance (Data.Vector.Unboxed.Base.Unbox t0, Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Set.Mask t0)) => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.Set.Fixed t0)
+ Data.PrimitiveArray.Index.Set: instance (Data.Vector.Unboxed.Base.Unbox t0, Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Set.Mask t0)) => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.Set.Fixed t0)
+ Data.PrimitiveArray.Index.Set: instance (Data.Vector.Unboxed.Base.Unbox t0, Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Set.Mask t0)) => Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Set.Fixed t0)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Classes.Eq t, GHC.Classes.Eq (Data.PrimitiveArray.Index.Set.Mask t)) => GHC.Classes.Eq (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Classes.Ord t, GHC.Classes.Ord (Data.PrimitiveArray.Index.Set.Mask t)) => GHC.Classes.Ord (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Generics.Generic t, GHC.Generics.Generic (Data.PrimitiveArray.Index.Set.Mask t)) => GHC.Generics.Generic (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Generics.Generic t, GHC.Generics.Generic (Data.PrimitiveArray.Index.Set.Mask t), Data.Binary.Class.Binary t, Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Set.Mask t)) => Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Generics.Generic t, GHC.Generics.Generic (Data.PrimitiveArray.Index.Set.Mask t), Data.Hashable.Class.Hashable t, Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Set.Mask t)) => Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Generics.Generic t, GHC.Generics.Generic (Data.PrimitiveArray.Index.Set.Mask t), Data.Serialize.Serialize t, Data.Serialize.Serialize (Data.PrimitiveArray.Index.Set.Mask t)) => Data.Serialize.Serialize (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Read.Read t, GHC.Read.Read (Data.PrimitiveArray.Index.Set.Mask t)) => GHC.Read.Read (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (GHC.Show.Show t, GHC.Show.Show (Data.PrimitiveArray.Index.Set.Mask t)) => GHC.Show.Show (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance (Test.QuickCheck.Arbitrary.Arbitrary t, Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Set.Mask t)) => Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.Set.Fixed t)
+ Data.PrimitiveArray.Index.Set: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance Data.Bits.Bits (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Bits.Extras.Ranked (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Bits.FiniteBits (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Set.BS1 i t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Set.BS2 i j t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Set.Interface i)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Class.Z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 i t) => Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Set.BS1 i t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Class.Z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS2 i j t) => Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Set.BS2 i j t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Class.Z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BitSet t) => Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 i Data.PrimitiveArray.Index.IOC.C)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 i Data.PrimitiveArray.Index.IOC.I)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 i Data.PrimitiveArray.Index.IOC.O)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS2 i j Data.PrimitiveArray.Index.IOC.C)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS2 i j Data.PrimitiveArray.Index.IOC.I)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS2 i j Data.PrimitiveArray.Index.IOC.O)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BitSet Data.PrimitiveArray.Index.IOC.C)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BitSet Data.PrimitiveArray.Index.IOC.I)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BitSet Data.PrimitiveArray.Index.IOC.O)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.ApplyMask (Data.PrimitiveArray.Index.Set.BS1 i t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.ApplyMask (Data.PrimitiveArray.Index.Set.BS2 i j t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.ApplyMask (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.SetPredSucc (Data.PrimitiveArray.Index.Set.BS1 i t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.SetPredSucc (Data.PrimitiveArray.Index.Set.BS2 i j t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.SetPredSucc (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.SetPredSucc (Data.PrimitiveArray.Index.Set.Fixed (Data.PrimitiveArray.Index.Set.BS1 i t))
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.SetPredSucc (Data.PrimitiveArray.Index.Set.Fixed (Data.PrimitiveArray.Index.Set.BS2 i j t))
+ Data.PrimitiveArray.Index.Set: instance Data.PrimitiveArray.Index.Set.SetPredSucc (Data.PrimitiveArray.Index.Set.Fixed (Data.PrimitiveArray.Index.Set.BitSet t))
+ Data.PrimitiveArray.Index.Set: instance Data.Serialize.Serialize (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance Data.Serialize.Serialize (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.Set.BitSet t0)
+ Data.PrimitiveArray.Index.Set: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.Set.Interface t0)
+ Data.PrimitiveArray.Index.Set: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.Set.BitSet t0)
+ Data.PrimitiveArray.Index.Set: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.Set.Interface t0)
+ Data.PrimitiveArray.Index.Set: instance Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Set.BitSet t0)
+ Data.PrimitiveArray.Index.Set: instance Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Set.Interface t0)
+ Data.PrimitiveArray.Index.Set: instance GHC.Classes.Eq (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Classes.Eq (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Classes.Ord (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Classes.Ord (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Set.C1_0BitSet
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Set.C1_0Fixed
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Set.C1_0Interface
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Set.D1BitSet
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Set.D1Fixed
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Set.D1Interface
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Generic (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Generic (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Selector Data.PrimitiveArray.Index.Set.S1_0_0BitSet
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Selector Data.PrimitiveArray.Index.Set.S1_0_0Fixed
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Selector Data.PrimitiveArray.Index.Set.S1_0_0Interface
+ Data.PrimitiveArray.Index.Set: instance GHC.Generics.Selector Data.PrimitiveArray.Index.Set.S1_0_1Fixed
+ Data.PrimitiveArray.Index.Set: instance GHC.Num.Num (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Num.Num (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Read.Read (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Show.Show (Data.PrimitiveArray.Index.Set.BS1 i t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Show.Show (Data.PrimitiveArray.Index.Set.BS2 i j t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Show.Show (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: instance GHC.Show.Show (Data.PrimitiveArray.Index.Set.Interface t)
+ Data.PrimitiveArray.Index.Set: instance Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Set.BS1 i t)
+ Data.PrimitiveArray.Index.Set: instance Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Set.BS2 i j t)
+ Data.PrimitiveArray.Index.Set: instance Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Set.BitSet t)
+ Data.PrimitiveArray.Index.Set: streamDownBsIMk :: (Monad m) => BS1 a i -> BS1 b i -> z -> m (z, Maybe (BS1 c i))
+ Data.PrimitiveArray.Index.Set: streamDownBsIStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (Step (t, Maybe s) (t :. s))
+ Data.PrimitiveArray.Index.Set: streamDownBsIiMk :: (Monad m) => BS2 a b i -> BS2 c d i -> z -> m (z, Maybe (BS2 e f i))
+ Data.PrimitiveArray.Index.Set: streamDownBsIiStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (Step (t, Maybe s) (t :. s))
+ Data.PrimitiveArray.Index.Set: streamDownBsMk :: (Monad m, Ord a) => a -> a -> t -> m (t, Maybe a)
+ Data.PrimitiveArray.Index.Set: streamDownBsStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (Step (t, Maybe s) (t :. s))
+ Data.PrimitiveArray.Index.Set: streamUpBsIMk :: (Monad m) => BS1 a i -> BS1 b i -> z -> m (z, Maybe (BS1 c i))
+ Data.PrimitiveArray.Index.Set: streamUpBsIStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (Step (t, Maybe s) (t :. s))
+ Data.PrimitiveArray.Index.Set: streamUpBsIiMk :: (Monad m) => BS2 a b i -> BS2 c d i -> z -> m (z, Maybe (BS2 e f i))
+ Data.PrimitiveArray.Index.Set: streamUpBsIiStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (Step (t, Maybe s) (t :. s))
+ Data.PrimitiveArray.Index.Set: streamUpBsMk :: (Monad m, Ord a) => a -> a -> t -> m (t, Maybe a)
+ Data.PrimitiveArray.Index.Set: streamUpBsStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (Step (t, Maybe s) (t :. s))
+ Data.PrimitiveArray.Index.Subword: [fromSubword] :: Subword t -> (Int :. Int)
+ Data.PrimitiveArray.Index.Subword: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Class.Z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Subword.Subword t) => Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Subword.Subword Data.PrimitiveArray.Index.IOC.C)
+ Data.PrimitiveArray.Index.Subword: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Subword.Subword Data.PrimitiveArray.Index.IOC.I)
+ Data.PrimitiveArray.Index.Subword: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Subword.Subword Data.PrimitiveArray.Index.IOC.O)
+ Data.PrimitiveArray.Index.Subword: instance Data.Serialize.Serialize (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.Subword.Subword t0)
+ Data.PrimitiveArray.Index.Subword: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.Subword.Subword t0)
+ Data.PrimitiveArray.Index.Subword: instance Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Subword.Subword t0)
+ Data.PrimitiveArray.Index.Subword: instance GHC.Classes.Eq (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance GHC.Classes.Ord (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Subword.C1_0Subword
+ Data.PrimitiveArray.Index.Subword: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Subword.D1Subword
+ Data.PrimitiveArray.Index.Subword: instance GHC.Generics.Generic (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance GHC.Generics.Selector Data.PrimitiveArray.Index.Subword.S1_0_0Subword
+ Data.PrimitiveArray.Index.Subword: instance GHC.Read.Read (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance GHC.Show.Show (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: instance Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Subword.Subword t)
+ Data.PrimitiveArray.Index.Subword: streamDownMk :: Monad m => t1 -> t2 -> t -> m (t, t1, t2)
+ Data.PrimitiveArray.Index.Subword: streamDownStep :: Monad m => Int -> (t1, Int, Int) -> m (Step (t1, Int, Int) ((:.) t1 (Subword t)))
+ Data.PrimitiveArray.Index.Subword: streamUpMk :: Monad m => t1 -> t -> m (t, t1, t1)
+ Data.PrimitiveArray.Index.Subword: streamUpStep :: Monad m => Int -> Int -> (t1, Int, Int) -> m (Step (t1, Int, Int) ((:.) t1 (Subword t)))
+ Data.PrimitiveArray.Index.Subword: subwordC :: Int -> Int -> Subword C
+ Data.PrimitiveArray.Index.Subword: subwordI :: Int -> Int -> Subword I
+ Data.PrimitiveArray.Index.Subword: subwordO :: Int -> Int -> Subword O
+ Data.PrimitiveArray.Index.Unit: Unit :: Unit t
+ Data.PrimitiveArray.Index.Unit: data Unit t
+ Data.PrimitiveArray.Index.Unit: instance Control.DeepSeq.NFData (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.Aeson.Types.Class.FromJSON (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.Aeson.Types.Class.ToJSON (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.Binary.Class.Binary (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.Hashable.Class.Hashable (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.PrimitiveArray.Index.Class.Index (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Class.Z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Unit.Unit t) => Data.PrimitiveArray.Index.Class.IndexStream (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.Serialize.Serialize (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.PrimitiveArray.Index.Unit.Unit t0)
+ Data.PrimitiveArray.Index.Unit: instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.PrimitiveArray.Index.Unit.Unit t0)
+ Data.PrimitiveArray.Index.Unit: instance Data.Vector.Unboxed.Base.Unbox (Data.PrimitiveArray.Index.Unit.Unit t0)
+ Data.PrimitiveArray.Index.Unit: instance GHC.Classes.Eq (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance GHC.Classes.Ord (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance GHC.Generics.Constructor Data.PrimitiveArray.Index.Unit.C1_0Unit
+ Data.PrimitiveArray.Index.Unit: instance GHC.Generics.Datatype Data.PrimitiveArray.Index.Unit.D1Unit
+ Data.PrimitiveArray.Index.Unit: instance GHC.Generics.Generic (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance GHC.Read.Read (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance GHC.Show.Show (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Index.Unit: instance Test.QuickCheck.Arbitrary.Arbitrary (Data.PrimitiveArray.Index.Unit.Unit t)
+ Data.PrimitiveArray.Vector.Compat: Exact :: Int -> Size
+ Data.PrimitiveArray.Vector.Compat: Max :: Int -> Size
+ Data.PrimitiveArray.Vector.Compat: Unknown :: Size
+ Data.PrimitiveArray.Vector.Compat: data Size :: *
+ Data.PrimitiveArray.Vector.Compat: flatten :: Monad m => (a -> m s) -> (s -> m (Step s b)) -> Stream m a -> Stream m b
- Data.PrimitiveArray.Class: class Index sh => MPrimArrayOps arr sh elm
+ Data.PrimitiveArray.Class: class (Index sh) => MPrimArrayOps arr sh elm
- Data.PrimitiveArray.Class: class Index sh => PrimArrayMap arr sh e e'
+ Data.PrimitiveArray.Class: class (Index sh) => PrimArrayMap arr sh e e'
- Data.PrimitiveArray.Class: class Index sh => PrimArrayOps arr sh elm
+ Data.PrimitiveArray.Class: class (Index sh) => PrimArrayOps arr sh elm
- Data.PrimitiveArray.FillTables: class Monad m => WriteCell m c sh
+ Data.PrimitiveArray.FillTables: class (Monad m) => WriteCell m c sh
- Data.PrimitiveArray.Index.PhantomInt: PInt :: Int -> PInt p
+ Data.PrimitiveArray.Index.PhantomInt: PInt :: Int -> PInt t p
- Data.PrimitiveArray.Index.PhantomInt: newtype PInt p
+ Data.PrimitiveArray.Index.PhantomInt: newtype PInt t p
- Data.PrimitiveArray.Index.Point: PointL :: Int -> PointL
+ Data.PrimitiveArray.Index.Point: PointL :: Int -> PointL t
- Data.PrimitiveArray.Index.Point: PointR :: Int -> PointR
+ Data.PrimitiveArray.Index.Point: PointR :: Int -> PointR t
- Data.PrimitiveArray.Index.Point: newtype PointL
+ Data.PrimitiveArray.Index.Point: newtype PointL t
- Data.PrimitiveArray.Index.Point: newtype PointR
+ Data.PrimitiveArray.Index.Point: newtype PointR t
- Data.PrimitiveArray.Index.Set: BitSet :: Int -> BitSet
+ Data.PrimitiveArray.Index.Set: BitSet :: Int -> BitSet t
- Data.PrimitiveArray.Index.Set: newtype BitSet
+ Data.PrimitiveArray.Index.Set: newtype BitSet t
- Data.PrimitiveArray.Index.Set: testBsS :: BitSet -> Maybe (Fixed BitSet)
+ Data.PrimitiveArray.Index.Set: testBsS :: BitSet t -> Maybe (Fixed (BitSet t))
- Data.PrimitiveArray.Index.Subword: Subword :: (Int :. Int) -> Subword
+ Data.PrimitiveArray.Index.Subword: Subword :: (Int :. Int) -> Subword t
- Data.PrimitiveArray.Index.Subword: newtype Subword
+ Data.PrimitiveArray.Index.Subword: newtype Subword t
- Data.PrimitiveArray.Index.Subword: subword :: Int -> Int -> Subword
+ Data.PrimitiveArray.Index.Subword: subword :: Int -> Int -> Subword t
- Data.PrimitiveArray.Index.Subword: subwordFromIndex :: Subword -> Int -> Subword
+ Data.PrimitiveArray.Index.Subword: subwordFromIndex :: Subword s -> Int -> Subword t
- Data.PrimitiveArray.Index.Subword: subwordIndex :: Subword -> Subword -> Int
+ Data.PrimitiveArray.Index.Subword: subwordIndex :: Subword s -> Subword t -> Int
- Data.PrimitiveArray.Index.Subword: upperTri :: Subword -> Int
+ Data.PrimitiveArray.Index.Subword: upperTri :: Subword t -> Int
- Data.PrimitiveArray.QuickCheck.Index.Set: prop_Fixed_BitSet_setSucc :: (Word, Fixed BitSet) -> Bool
+ Data.PrimitiveArray.QuickCheck.Index.Set: prop_Fixed_BitSet_setSucc :: (Word, Fixed (BitSet I)) -> Bool

Files

Data/PrimitiveArray.hs view
@@ -4,10 +4,12 @@   , module Data.PrimitiveArray.Dense   , module Data.PrimitiveArray.FillTables   , module Data.PrimitiveArray.Index+  , module Data.PrimitiveArray.Vector.Compat   ) where  import Data.PrimitiveArray.Class import Data.PrimitiveArray.Dense import Data.PrimitiveArray.FillTables import Data.PrimitiveArray.Index+import Data.PrimitiveArray.Vector.Compat 
Data/PrimitiveArray/Class.hs view
@@ -14,7 +14,8 @@ import           Control.Monad.Primitive (PrimMonad) import           Control.Monad.ST (runST) import           Prelude as P-import qualified Data.Vector.Fusion.Stream as S+import qualified Data.Vector.Fusion.Stream.Monadic as SM+import           Data.Vector.Fusion.Util  import Data.PrimitiveArray.Index @@ -136,7 +137,7 @@ -- | Return all associations from an array.  assocs :: (IndexStream sh, PrimArrayOps arr sh elm) => arr sh elm -> [(sh,elm)]-assocs arr = P.map (\k -> (k,unsafeIndex arr k)) . S.toList $ streamUp lb ub where+assocs arr = P.map (\k -> (k,unsafeIndex arr k)) . unId . SM.toList $ streamUp lb ub where   (lb,ub) = bounds arr {-# INLINE assocs #-} @@ -163,7 +164,7 @@ -- | Returns all elements of an immutable array as a list.  toList :: (IndexStream sh, PrimArrayOps arr sh elm) => arr sh elm -> [elm]-toList arr = let (lb,ub) = bounds arr in P.map ((!) arr) . S.toList $ streamUp lb ub+toList arr = let (lb,ub) = bounds arr in P.map ((!) arr) . unId . SM.toList $ streamUp lb ub {-# INLINE toList #-}  
Data/PrimitiveArray/Dense.hs view
@@ -10,6 +10,9 @@ -- TODO consider if we want to force the lower index to be zero, or allow -- non-zero lower indices. Will have to be considered together with the -- @Index.Class@ module!+--+-- TODO while @Unboxed@ is, in princile, @Hashable@, we'd need the+-- corresponding @VU.Vector@ instances ...  module Data.PrimitiveArray.Dense where @@ -28,6 +31,7 @@ import qualified Data.Vector as V hiding (forM_, length, zipWithM_) import qualified Data.Vector.Generic as G import qualified Data.Vector.Unboxed as VU hiding (forM_, length, zipWithM_)+import           Data.Hashable (Hashable)   import           Data.PrimitiveArray.Class@@ -44,6 +48,7 @@ instance (Serialize sh, Serialize e, Unbox e) => Serialize (Unboxed sh e) instance (ToJSON    sh, ToJSON    e, Unbox e) => ToJSON    (Unboxed sh e) instance (FromJSON  sh, FromJSON  e, Unbox e) => FromJSON  (Unboxed sh e)+instance (Hashable  sh, Hashable  e, Hashable (VU.Vector e), Unbox e) => Hashable  (Unboxed sh e)  instance (NFData sh) => NFData (Unboxed sh e) where   rnf (Unboxed l h xs) = rnf l `seq` rnf h `seq` rnf xs@@ -104,6 +109,7 @@ instance (Serialize sh, Serialize e)  => Serialize (Boxed sh e) instance (ToJSON    sh, ToJSON    e)  => ToJSON    (Boxed sh e) instance (FromJSON  sh, FromJSON  e)  => FromJSON  (Boxed sh e)+instance (Hashable  sh, Hashable  e, Hashable (V.Vector e)) => Hashable  (Boxed sh e)  instance (NFData sh, NFData e) => NFData (Boxed sh e) where   rnf (Boxed l h xs) = rnf l `seq` rnf h `seq` rnf xs@@ -138,7 +144,7 @@   {-# INLINE readM #-}   {-# INLINE writeM #-} -instance (Index sh, Unbox elm) => PrimArrayOps Boxed sh elm where+instance (Index sh) => PrimArrayOps Boxed sh elm where   bounds (Boxed l h _) = (l,h)   unsafeFreeze (MBoxed l h mba) = Boxed l h `liftM` G.unsafeFreeze mba   unsafeThaw   (Boxed l h ba) = MBoxed l h `liftM` G.unsafeThaw ba
Data/PrimitiveArray/FillTables.hs view
@@ -8,9 +8,9 @@  import Control.Monad.Primitive import Control.Monad (when)-import Data.Vector.Fusion.Stream as S+--import Data.Vector.Fusion.Stream as S import Data.Vector.Fusion.Stream.Monadic as M-import Data.Vector.Fusion.Stream.Size+--import Data.Vector.Fusion.Stream.Size  import Data.PrimitiveArray.Class import Data.PrimitiveArray.Index
Data/PrimitiveArray/Index.hs view
@@ -1,21 +1,21 @@  module Data.PrimitiveArray.Index   ( module Data.PrimitiveArray.Index.Class-  , module Data.PrimitiveArray.Index.Complement   , module Data.PrimitiveArray.Index.Int-  , module Data.PrimitiveArray.Index.Outside+  , module Data.PrimitiveArray.Index.IOC   , module Data.PrimitiveArray.Index.PhantomInt   , module Data.PrimitiveArray.Index.Point   , module Data.PrimitiveArray.Index.Set   , module Data.PrimitiveArray.Index.Subword+  , module Data.PrimitiveArray.Index.Unit   ) where  import Data.PrimitiveArray.Index.Class-import Data.PrimitiveArray.Index.Complement import Data.PrimitiveArray.Index.Int-import Data.PrimitiveArray.Index.Outside-import Data.PrimitiveArray.Index.PhantomInt-import Data.PrimitiveArray.Index.Point-import Data.PrimitiveArray.Index.Set-import Data.PrimitiveArray.Index.Subword+import Data.PrimitiveArray.Index.IOC+import Data.PrimitiveArray.Index.PhantomInt hiding (streamUpMk, streamUpStep, streamDownMk, streamDownStep)+import Data.PrimitiveArray.Index.Point hiding (streamUpMk, streamUpStep, streamDownMk, streamDownStep)+import Data.PrimitiveArray.Index.Set hiding (streamUpBsMk, streamUpBsStep, streamDownBsMk, StreamDownBsStep, streamUpBsIMk, streamUpBsIStep, streamDownBsIMk, StreamDownBsIStep, streamUpBsIiMk, streamUpBsIiStep, streamDownBsIiMk, StreamDownBsIiStep)+import Data.PrimitiveArray.Index.Subword hiding (streamUpMk, streamUpStep, streamDownMk, streamDownStep)+import Data.PrimitiveArray.Index.Unit 
Data/PrimitiveArray/Index/Class.hs view
@@ -6,6 +6,7 @@ import           Control.Monad (liftM2) import           Data.Aeson import           Data.Binary+import           Data.Hashable (Hashable) import           Data.Serialize import           Data.Vector.Fusion.Stream.Monadic (Stream) import           Data.Vector.Unboxed.Deriving@@ -32,6 +33,7 @@ instance (Serialize a, Serialize b) => Serialize (a:.b) instance (ToJSON    a, ToJSON    b) => ToJSON    (a:.b) instance (FromJSON  a, FromJSON  b) => FromJSON  (a:.b)+instance (Hashable  a, Hashable  b) => Hashable  (a:.b)  deriving instance (Read a, Read b) => Read (a:.b) @@ -45,11 +47,15 @@   -infixl 3 :>+infixr 3 :>  -- | A different version of strict pairs. Makes for simpler type inference in -- multi-tape grammars. We use @:>@ when we have special needs, like -- non-recursive instances on inductives tuples, as used for set indices.+--+-- This one is @infixr@ so that in @a :> b@ we can have the main type in+-- @a@ and the specializing types in @b@ and then dispatch on @a :> ts@+-- with @ts@ maybe a chain of @:>@.  data a :> b = !a :> !b   deriving (Eq,Ord,Show,Generic)@@ -63,6 +69,7 @@ instance (Serialize a, Serialize b) => Serialize (a:>b) instance (ToJSON    a, ToJSON    b) => ToJSON    (a:>b) instance (FromJSON  a, FromJSON  b) => FromJSON  (a:>b)+instance (Hashable  a, Hashable  b) => Hashable  (a:>b)  deriving instance (Read a, Read b) => Read (a:>b) @@ -90,6 +97,7 @@ instance Serialize Z instance ToJSON    Z instance FromJSON  Z+instance Hashable  Z  instance Arbitrary Z where   arbitrary = return Z
− Data/PrimitiveArray/Index/Complement.hs
@@ -1,60 +0,0 @@--module Data.PrimitiveArray.Index.Complement where--import Control.Applicative-import Control.DeepSeq (NFData(..))-import Data.Aeson-import Data.Binary-import Data.Serialize-import Data.Vector.Unboxed.Deriving-import Data.Vector.Unboxed (Unbox(..))-import GHC.Generics-import Test.QuickCheck--import Data.PrimitiveArray.Index.Class------ | A special index wrapper -- like @Outside@. @Complement@ allows combining--- inside and outside symbols which complement each other. This then yields--- ensemble results for each index (you need @ADPfusion@ for this).--newtype Complement z = C { unC :: z }-  deriving (Eq,Ord,Read,Show,Generic)--derivingUnbox "Complement"-  [t| forall z . Unbox z => Complement z -> z |]-  [| unC |]-  [| C   |]--instance Binary    z => Binary    (Complement z)-instance Serialize z => Serialize (Complement z)-instance ToJSON    z => ToJSON    (Complement z)-instance FromJSON  z => FromJSON  (Complement z)--instance NFData z => NFData (Complement z) where-  rnf (C z) = rnf z-  {-# Inline rnf #-}--instance Index i => Index (Complement i) where-  linearIndex (C l) (C h) (C i) = linearIndex l h i-  {-# INLINE linearIndex #-}-  smallestLinearIndex (C i) = smallestLinearIndex i-  {-# INLINE smallestLinearIndex #-}-  largestLinearIndex (C i) = largestLinearIndex i-  {-# INLINE largestLinearIndex #-}-  size (C l) (C h) = size l h-  {-# INLINE size #-}-  inBounds (C l) (C h) (C z) = inBounds l h z-  {-# INLINE inBounds #-}--instance IndexStream i => IndexStream (Complement i) where-  streamUp   (C l) (C h) = fmap C $ streamUp l h-  {-# INLINE streamUp #-}-  streamDown (C l) (C h) = fmap C $ streamDown l h-  {-# INLINE streamDown #-}--instance Arbitrary z => Arbitrary (Complement z) where-  arbitrary    = C <$> arbitrary-  shrink (C z) = C <$> shrink z-
+ Data/PrimitiveArray/Index/IOC.hs view
@@ -0,0 +1,17 @@++module Data.PrimitiveArray.Index.IOC where++++-- | Phantom type for @Inside@ indices.++data I++-- | Phantom type for @Outside@ indices.++data O++-- | Phantom type for @Complement@ indices.++data C+
Data/PrimitiveArray/Index/Int.hs view
@@ -1,11 +1,11 @@  module Data.PrimitiveArray.Index.Int where -import Data.Vector.Fusion.Stream.Monadic (flatten,map,Step(..))-import Data.Vector.Fusion.Stream.Size+import Data.Vector.Fusion.Stream.Monadic (map,Step(..)) import Prelude hiding (map)  import Data.PrimitiveArray.Index.Class+import Data.PrimitiveArray.Vector.Compat   @@ -22,7 +22,7 @@   {-# Inline inBounds #-}  instance IndexStream z => IndexStream (z:.Int) where-  streamUp (ls:.l) (hs:.h) = flatten mk step Unknown $ streamUp ls hs+  streamUp (ls:.l) (hs:.h) = flatten mk step $ streamUp ls hs     where mk z = return (z,l)           step (z,k)             | k > h     = return $ Done@@ -30,7 +30,7 @@           {-# Inline [0] mk   #-}           {-# Inline [0] step #-}   {-# Inline streamUp #-}-  streamDown (ls:.l) (hs:.h) = flatten mk step Unknown $ streamDown ls hs+  streamDown (ls:.l) (hs:.h) = flatten mk step $ streamDown ls hs     where mk z = return (z,h)           step (z,k)             | k < l     = return $ Done
− Data/PrimitiveArray/Index/Outside.hs
@@ -1,62 +0,0 @@--module Data.PrimitiveArray.Index.Outside where--import Control.Applicative-import Control.DeepSeq (NFData(..))-import Data.Aeson-import Data.Binary-import Data.Serialize-import Data.Vector.Unboxed.Deriving-import Data.Vector.Unboxed (Unbox(..))-import GHC.Generics-import Test.QuickCheck--import Data.PrimitiveArray.Index.Class------ | The 'Outside' wrapper takes an index structure, and provides--- 'IndexStream' functions 'streamUp' and 'streamDown' that work the other--- way around. In particular, for @Outside z@ @streamUp (Outside z) = fmap--- Outside $ streamDown z@ and vice versa. @Index@ functions are unwrapped--- but otherwise work as before.--newtype Outside z = O { unO :: z }-  deriving (Eq,Ord,Read,Show,Generic)--derivingUnbox "Outside"-  [t| forall z . Unbox z => Outside z -> z |]-  [| unO |]-  [| O   |]--instance Binary    z => Binary    (Outside z)-instance Serialize z => Serialize (Outside z)-instance ToJSON    z => ToJSON    (Outside z)-instance FromJSON  z => FromJSON  (Outside z)--instance NFData z => NFData (Outside z) where-  rnf (O z) = rnf z-  {-# Inline rnf #-}--instance Index i => Index (Outside i) where-  linearIndex (O l) (O h) (O i) = linearIndex l h i-  {-# INLINE linearIndex #-}-  smallestLinearIndex (O i) = smallestLinearIndex i-  {-# INLINE smallestLinearIndex #-}-  largestLinearIndex (O i) = largestLinearIndex i-  {-# INLINE largestLinearIndex #-}-  size (O l) (O h) = size l h-  {-# INLINE size #-}-  inBounds (O l) (O h) (O z) = inBounds l h z-  {-# INLINE inBounds #-}--instance IndexStream i => IndexStream (Outside i) where-  streamUp (O l) (O h) = fmap O $ streamDown l h-  {-# INLINE streamUp #-}-  streamDown (O l) (O h) = fmap O $ streamUp l h-  {-# INLINE streamDown #-}--instance Arbitrary z => Arbitrary (Outside z) where-  arbitrary = O <$> arbitrary-  shrink (O z) = O <$> shrink z-
Data/PrimitiveArray/Index/PhantomInt.hs view
@@ -7,16 +7,18 @@ import Data.Aeson (FromJSON,ToJSON) import Data.Binary (Binary) import Data.Data+import Data.Hashable (Hashable) import Data.Ix(Ix) import Data.Serialize (Serialize) import Data.Typeable-import Data.Vector.Fusion.Stream.Monadic (flatten,map,Step(..))-import Data.Vector.Fusion.Stream.Size+import Data.Vector.Fusion.Stream.Monadic (map,Step(..)) import Data.Vector.Unboxed.Deriving import GHC.Generics (Generic) import Prelude hiding (map)  import Data.PrimitiveArray.Index.Class+import Data.PrimitiveArray.Index.IOC+import Data.PrimitiveArray.Vector.Compat   @@ -24,21 +26,32 @@ -- type @p@. In particular, the @Index@ and @IndexStream@ instances are the -- same as for raw @Int@s. -newtype PInt p = PInt { getPInt :: Int }+newtype PInt t p = PInt { getPInt :: Int }   deriving (Read,Show,Eq,Ord,Enum,Num,Integral,Real,Generic,Data,Typeable,Ix) +pIntI :: Int -> PInt I p+pIntI = PInt+{-# Inline pIntI #-} -derivingUnbox "PInt"-  [t| forall p . PInt p -> Int |]  [| getPInt |]  [| PInt |]+pIntO :: Int -> PInt O p+pIntO = PInt+{-# Inline pIntO #-} -instance Binary    (PInt p)-instance Serialize (PInt p)-instance FromJSON  (PInt p)-instance ToJSON    (PInt p)+pIntC :: Int -> PInt C p+pIntC = PInt+{-# Inline pIntC #-} -instance NFData (PInt p)+derivingUnbox "PInt"+  [t| forall t p . PInt t p -> Int |]  [| getPInt |]  [| PInt |] -instance Index (PInt p) where+instance Binary    (PInt t p)+instance Serialize (PInt t p)+instance FromJSON  (PInt t p)+instance ToJSON    (PInt t p)+instance Hashable  (PInt t p)+instance NFData    (PInt t p)++instance Index (PInt t p) where   linearIndex _ _ (PInt k) = k   {-# Inline linearIndex #-}   smallestLinearIndex _ = error "still needed?"@@ -50,8 +63,49 @@   inBounds l h k = l <= k && k <= h   {-# Inline inBounds #-} +instance IndexStream z => IndexStream (z:.PInt I p) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpMk   l h) (streamUpStep   l h) $ streamUp ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownMk l h) (streamDownStep l h) $ streamDown ls hs+  {-# Inline streamUp   #-}+  {-# Inline streamDown #-}++instance IndexStream z => IndexStream (z:.PInt O p) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamDownMk l h) (streamDownStep l h) $ streamUp ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamUpMk   l h) (streamUpStep   l h) $ streamDown ls hs+  {-# Inline streamUp   #-}+  {-# Inline streamDown #-}++instance IndexStream z => IndexStream (z:.PInt C p) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpMk   l h) (streamUpStep   l h) $ streamUp ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownMk l h) (streamDownStep l h) $ streamDown ls hs+  {-# Inline streamUp   #-}+  {-# Inline streamDown #-}++streamUpMk l h z = return (z,l)+{-# Inline [0] streamUpMk #-}++streamUpStep l h (z,k)+  | k > h     = return $ Done+  | otherwise = return $ Yield (z:.k) (z,k+1)+{-# Inline [0] streamUpStep #-}++streamDownMk l h z = return (z,h)+{-# Inline [0] streamDownMk #-}++streamDownStep l h (z,k)+  | k < l     = return $ Done+  | otherwise = return $ Yield (z:.k) (z,k-1)+{-# Inline [0] streamDownStep #-}++instance IndexStream (PInt I p)++instance IndexStream (PInt O p)++instance IndexStream (PInt C p)++{- instance IndexStream z => IndexStream (z:.(PInt p)) where-  streamUp (ls:.l) (hs:.h) = flatten mk step Unknown $ streamUp ls hs+  streamUp (ls:.l) (hs:.h) = flatten mk step $ streamUp ls hs     where mk z = return (z,l)           step (z,k)             | k > h     = return $ Done@@ -59,7 +113,7 @@           {-# Inline [0] mk   #-}           {-# Inline [0] step #-}   {-# Inline streamUp #-}-  streamDown (ls:.l) (hs:.h) = flatten mk step Unknown $ streamDown ls hs+  streamDown (ls:.l) (hs:.h) = flatten mk step $ streamDown ls hs     where mk z = return (z,h)           step (z,k)             | k < l     = return $ Done@@ -73,4 +127,5 @@   {-# Inline streamUp #-}   streamDown l h = map (\(Z:.k) -> k) $ streamDown (Z:.l) (Z:.h)   {-# Inline streamDown #-}+-} 
Data/PrimitiveArray/Index/Point.hs view
@@ -11,47 +11,62 @@ import           Data.Binary import           Data.Bits import           Data.Bits.Extras (Ranked)+import           Data.Hashable (Hashable) import           Data.Serialize-import           Data.Vector.Fusion.Stream.Size import           Data.Vector.Unboxed.Deriving import           Data.Vector.Unboxed (Unbox(..))-import           GHC.Generics+import           GHC.Generics (Generic) import qualified Data.Vector.Fusion.Stream.Monadic as SM import qualified Data.Vector.Unboxed as VU import           Test.QuickCheck  import           Data.PrimitiveArray.Index.Class+import           Data.PrimitiveArray.Index.IOC+import           Data.PrimitiveArray.Vector.Compat    -- | A point in a left-linear grammar. The syntactic symbol is in left-most -- position. -newtype PointL = PointL {fromPointL :: Int}+newtype PointL t = PointL {fromPointL :: Int}   deriving (Eq,Read,Show,Generic) +pointLI :: Int -> PointL I+pointLI = PointL+{-# Inline pointLI #-}++pointLO :: Int -> PointL O+pointLO = PointL+{-# Inline pointLO #-}++pointLC :: Int -> PointL C+pointLC = PointL+{-# Inline pointLC #-}+ -- | A point in a right-linear grammars. -newtype PointR = PointR {fromPointR :: Int}+newtype PointR t = PointR {fromPointR :: Int}   deriving (Eq,Read,Show,Generic)    derivingUnbox "PointL"-  [t| PointL -> Int    |]+  [t| forall t . PointL t -> Int    |]   [| \ (PointL i) -> i |]   [| \ i -> PointL i   |] -instance Binary    PointL-instance Serialize PointL-instance FromJSON  PointL-instance ToJSON    PointL+instance Binary    (PointL t)+instance Serialize (PointL t)+instance FromJSON  (PointL t)+instance ToJSON    (PointL t)+instance Hashable  (PointL t) -instance NFData PointL where+instance NFData (PointL t) where   rnf (PointL l) = rnf l   {-# Inline rnf #-} -instance Index PointL where+instance Index (PointL t) where   linearIndex _ _ (PointL z) = z   {-# INLINE linearIndex #-}   smallestLinearIndex (PointL l) = error "still needed?"@@ -63,6 +78,41 @@   inBounds (_) (PointL h) (PointL x) = 0<=x && x<=h   {-# INLINE inBounds #-} +instance IndexStream z => IndexStream (z:.PointL I) where+  streamUp   (ls:.PointL lf) (hs:.PointL ht) = flatten (streamUpMk   lf) (streamUpStep   ht) $ streamUp ls hs+  streamDown (ls:.PointL lf) (hs:.PointL ht) = flatten (streamDownMk ht) (streamDownStep lf) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++instance IndexStream z => IndexStream (z:.PointL O) where+  streamUp   (ls:.PointL lf) (hs:.PointL ht) = flatten (streamDownMk ht) (streamDownStep lf) $ streamUp   ls hs+  streamDown (ls:.PointL lf) (hs:.PointL ht) = flatten (streamUpMk   lf) (streamUpStep   ht) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++instance IndexStream z => IndexStream (z:.PointL C) where+  streamUp   (ls:.PointL lf) (hs:.PointL ht) = flatten (streamUpMk   lf) (streamUpStep   ht) $ streamUp ls hs+  streamDown (ls:.PointL lf) (hs:.PointL ht) = flatten (streamDownMk ht) (streamDownStep lf) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++streamUpMk lf z = return (z,lf)+{-# Inline [0] streamUpMk #-}++streamUpStep ht (z,k)+  | k > ht    = return $ SM.Done+  | otherwise = return $ SM.Yield (z:.PointL k) (z,k+1)+{-# Inline [0] streamUpStep #-}++streamDownMk ht z = return (z,ht)+{-# Inline [0] streamDownMk #-}++streamDownStep lf (z,k)+  | k < lf    = return $ SM.Done+  | otherwise = return $ SM.Yield (z:.PointL k) (z,k-1)+{-# Inline [0] streamDownStep #-}++{- instance IndexStream z => IndexStream (z:.PointL) where   streamUp (ls:.PointL lf) (hs:.PointL ht) = SM.flatten mk step Unknown $ streamUp ls hs     where mk z = return (z,lf)@@ -80,10 +130,11 @@           {-# Inline [0] mk   #-}           {-# Inline [0] step #-}   {-# Inline streamDown #-}+-} -instance IndexStream PointL+instance IndexStream (Z:.PointL t) => IndexStream (PointL t) -instance Arbitrary PointL where+instance Arbitrary (PointL t) where   arbitrary = do     b <- choose (0,100)     return $ PointL b@@ -93,21 +144,26 @@   +-- * @PointR@+--+-- TODO complete instances+ derivingUnbox "PointR"-  [t| PointR -> Int    |]+  [t| forall t . PointR t -> Int    |]   [| \ (PointR i) -> i |]   [| \ i -> PointR i   |] -instance Binary    PointR-instance Serialize PointR-instance FromJSON  PointR-instance ToJSON    PointR+instance Binary    (PointR t)+instance Serialize (PointR t)+instance FromJSON  (PointR t)+instance ToJSON    (PointR t)+instance Hashable  (PointR t) -instance NFData PointR where+instance NFData (PointR t) where   rnf (PointR l) = rnf l   {-# Inline rnf #-} -instance Index PointR where+instance Index (PointR t) where   linearIndex l _ (PointR z) = undefined   {-# INLINE linearIndex #-}   smallestLinearIndex = undefined
Data/PrimitiveArray/Index/Set.hs view
@@ -11,18 +11,20 @@ import           Data.Binary (Binary) import           Data.Bits import           Data.Bits.Extras+import           Data.Hashable (Hashable) import           Data.Serialize (Serialize)-import           Data.Vector.Fusion.Stream.Size import           Data.Vector.Unboxed.Deriving import           Data.Vector.Unboxed (Unbox(..)) import           Debug.Trace-import           GHC.Generics+import           GHC.Generics (Generic) import qualified Data.Vector.Fusion.Stream.Monadic as SM import qualified Data.Vector.Unboxed as VU import           Test.QuickCheck (Arbitrary(..), choose, elements)  import           Data.Bits.Ordered import           Data.PrimitiveArray.Index.Class+import           Data.PrimitiveArray.Index.IOC+import           Data.PrimitiveArray.Vector.Compat   @@ -36,8 +38,11 @@ -- these to reduce programming overhead.  newtype Interface t = Iter { getIter :: Int }-  deriving (Eq,Ord,Read,Show,Generic,Num)+  deriving (Eq,Ord,Generic,Num) +instance Show (Interface t) where+  show (Iter i) = "(I:" ++ show i ++ ")"+ -- | Declare the interface to be the start of a path.  data First@@ -57,17 +62,37 @@ -- -- TODO can we use @Word@s now? -newtype BitSet = BitSet { getBitSet :: Int }+newtype BitSet t = BitSet { getBitSet :: Int }   deriving (Eq,Ord,Read,Generic,FiniteBits,Ranked,Num,Bits) +bitSetI :: Int -> BitSet I+bitSetI = BitSet+{-# Inline bitSetI #-}++bitSetO :: Int -> BitSet O+bitSetO = BitSet+{-# Inline bitSetO #-}++bitSetC :: Int -> BitSet C+bitSetC = BitSet+{-# Inline bitSetC #-}+ -- | A bitset with one interface. -type BS1I i = BitSet:>Interface i+-- type BS1 t i = BitSet t :> Interface i +data BS1 i t = BS1 !(BitSet t) !(Interface i)++deriving instance Show (BS1 i t)+ -- | A bitset with two interfaces. -type BS2I i j = BitSet:>Interface i:>Interface j+-- type BS2 t i j = BitSet t :> Interface i :> Interface j +data BS2 i j t = BS2 !(BitSet t) !(Interface i) !(Interface j)++deriving instance Show (BS2 i j t)+ -- | Successor and Predecessor for sets. Designed as a class to accomodate -- sets with interfaces and without interfaces with one function. --@@ -129,6 +154,7 @@ instance Serialize (Interface t) instance ToJSON    (Interface t) instance FromJSON  (Interface t)+instance Hashable  (Interface t)  instance NFData (Interface t) where   rnf (Iter i) = rnf i@@ -149,23 +175,24 @@   derivingUnbox "BitSet"-  [t| BitSet     -> Int |]+  [t| forall t . BitSet t -> Int |]   [| \(BitSet s) -> s   |]   [| BitSet             |] -instance Show BitSet where+instance Show (BitSet t) where   show (BitSet s) = "<" ++ (show $ activeBitsL s) ++ ">(" ++ show s ++ ")" -instance Binary    BitSet-instance Serialize BitSet-instance ToJSON    BitSet-instance FromJSON  BitSet+instance Binary    (BitSet t)+instance Serialize (BitSet t)+instance ToJSON    (BitSet t)+instance FromJSON  (BitSet t)+instance Hashable  (BitSet t) -instance NFData BitSet where+instance NFData (BitSet t) where   rnf (BitSet s) = rnf s   {-# Inline rnf #-} -instance Index BitSet where+instance Index (BitSet t) where   linearIndex l _ (BitSet z) = z - smallestLinearIndex l -- (2 ^ popCount l - 1)   {-# INLINE linearIndex #-}   smallestLinearIndex l = 2 ^ popCount l - 1@@ -177,71 +204,172 @@   inBounds l h z = popCount l <= popCount z && popCount z <= popCount h   {-# INLINE inBounds #-} +instance IndexStream z => IndexStream (z:.BitSet I) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpBsMk   l h) (streamUpBsStep   l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownBsMk l h) (streamDownBsStep l h) $ streamDown ls hs+  {-# Inline streamUp   #-}+  {-# Inline streamDown #-} +instance IndexStream z => IndexStream (z:.BitSet O) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamDownBsMk l h) (streamDownBsStep l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamUpBsMk   l h) (streamUpBsStep   l h) $ streamDown ls hs+  {-# Inline streamUp   #-}+  {-# Inline streamDown #-} -instance IndexStream z => IndexStream (z:.BitSet) where-  streamUp (ls:.l) (hs:.h) = SM.flatten mk step Unknown $ streamUp ls hs-    where mk z = return (z , (if l <= h then Just l else Nothing))-          step (z , Nothing) = return $ SM.Done-          step (z , Just t ) = return $ SM.Yield (z:.t) (z , setSucc l h t)-          {-# Inline [0] mk   #-}-          {-# Inline [0] step #-}+instance IndexStream z => IndexStream (z:.BitSet C) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpBsMk   l h) (streamUpBsStep   l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownBsMk l h) (streamDownBsStep l h) $ streamDown ls hs   {-# Inline streamUp   #-}-  streamDown (ls:.l) (hs:.h) = SM.flatten mk step Unknown $ streamDown ls hs-    where mk z = return (z :. (if l <= h then Just h else Nothing))-          step (z :. Nothing) = return $ SM.Done-          step (z :. Just t ) = return $ SM.Yield (z:.t) (z :. setPred l h t)-          {-# Inline [0] mk   #-}-          {-# Inline [0] step #-}   {-# Inline streamDown #-} -instance IndexStream z => IndexStream (z:.(BitSet:>Interface i)) where-  streamUp (ls:.l@(sl:>_)) (hs:.h@(sh:>_)) = SM.flatten mk step Unknown $ streamUp ls hs-    where mk z = return (z, (if sl<=sh then Just (sl:>(Iter . max 0 $ lsbZ sl)) else Nothing))-          step (z , Nothing) = return $ SM.Done-          step (z,  Just t ) = return $ SM.Yield (z:.t) (z , setSucc l h t)-          {-# Inline [0] mk   #-}-          {-# Inline [0] step #-}+instance IndexStream (Z:.BitSet t) => IndexStream (BitSet t)+++streamUpBsMk :: (Monad m, Ord a) => a -> a -> t -> m (t, Maybe a)+streamUpBsMk l h z = return (z, if l <= h then Just l else Nothing)+{-# Inline [0] streamUpBsMk #-}++streamUpBsStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (SM.Step (t, Maybe s) (t :. s))+streamUpBsStep l h (z , Nothing) = return $ SM.Done+streamUpBsStep l h (z , Just t ) = return $ SM.Yield (z:.t) (z , setSucc l h t)+{-# Inline [0] streamUpBsStep #-}++streamDownBsMk :: (Monad m, Ord a) => a -> a -> t -> m (t, Maybe a)+streamDownBsMk l h z = return (z, if l <=h then Just h else Nothing)+{-# Inline [0] streamDownBsMk #-}++streamDownBsStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (SM.Step (t, Maybe s) (t :. s))+streamDownBsStep l h (z , Nothing) = return $ SM.Done+streamDownBsStep l h (z , Just t ) = return $ SM.Yield (z:.t) (z , setPred l h t)+{-# Inline [0] streamDownBsStep #-}++++-- ** @BS1@++instance Index (BS1 i t) where+  linearIndex (BS1 ls li) (BS1 hs hi) (BS1 s i) = linearIndex (ls:.li) (hs:.hi) (s:.i)+  {-# INLINE linearIndex #-}+  smallestLinearIndex (BS1 s i) = smallestLinearIndex (s:.i)+  {-# INLINE smallestLinearIndex #-}+  largestLinearIndex (BS1 s i) = largestLinearIndex (s:.i)+  {-# INLINE largestLinearIndex #-}+  size (BS1 ls li) (BS1 hs hi) = size (ls:.li) (hs:.hi)+  {-# INLINE size #-}+  inBounds (BS1 ls li) (BS1 hs hi) (BS1 s i) = inBounds (ls:.li) (hs:.hi) (s:.i)+  {-# INLINE inBounds #-}++instance IndexStream z => IndexStream (z:.BS1 i I) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpBsIMk   l h) (streamUpBsIStep   l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownBsIMk l h) (streamDownBsIStep l h) $ streamDown ls hs   {-# Inline streamUp #-}-  streamDown (ls:.l@(sl:>_)) (hs:.h@(sh:>_)) = SM.flatten mk step Unknown $ streamDown ls hs-    where mk z = return (z, (if sl<=sh then Just (sh:>(Iter . max 0 $ lsbZ sh)) else Nothing))-          step (z , Nothing) = return $ SM.Done-          step (z , Just t ) = return $ SM.Yield (z:.t) (z , setPred l h t)-          {-# Inline [0] mk   #-}-          {-# Inline [0] step #-}   {-# Inline streamDown #-} -instance IndexStream z => IndexStream (z:.(BitSet:>Interface i:>Interface j)) where-  streamUp (ls:.l@(sl:>_:>_)) (hs:.h@(sh:>_:>_)) = SM.flatten mk step Unknown $ streamUp ls hs-    where mk z | sl > sh   = return (z , Nothing)-               | cl == 0   = return (z , Just (0:>0:>0))-               | cl == 1   = let i = lsbZ sl-                             in  return (z , Just (sl :> Iter i :> Iter i))-               | otherwise = let i = lsbZ sl; j = lsbZ (sl `clearBit` i)-                             in  return (z , Just (sl :> Iter i :> Iter j))-               where cl = popCount sl-          step (z , Nothing) = return $ SM.Done-          step (z , Just t ) = return $ SM.Yield (z:.t) (z , setSucc l h t)-          {-# Inline [0] mk   #-}-          {-# Inline [0] step #-}+instance IndexStream z => IndexStream (z:.BS1 i O) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamDownBsIMk l h) (streamDownBsIStep l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamUpBsIMk   l h) (streamUpBsIStep   l h) $ streamDown ls hs   {-# Inline streamUp #-}-  streamDown (ls:.l@(sl:>_:>_)) (hs:.h@(sh:>_:>_)) = SM.flatten mk step Unknown $ streamDown ls hs-    where mk z | sl > sh   = return (z , Nothing)-               | ch == 0   = return (z , Just (0:>0:>0))-               | ch == 1   = let i = lsbZ sh-                             in  return (z , Just (sh :> Iter i :> Iter i))-               | otherwise = let i = lsbZ sh; j = lsbZ sh-                             in  return (z , Just (sh :> Iter i :> Iter j))-               where ch = popCount sh-          step (z , Nothing) = return $ SM.Done-          step (z , Just t ) = return $ SM.Yield (z:.t) (z , setPred l h t)-          {-# Inline [0] mk   #-}-          {-# Inline [0] step #-}   {-# Inline streamDown #-} +instance IndexStream z => IndexStream (z:.BS1 i C) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpBsIMk   l h) (streamUpBsIStep   l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownBsIMk l h) (streamDownBsIStep l h) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-} +instance IndexStream (Z:.BS1 i t) => IndexStream (BS1 i t) -instance SetPredSucc BitSet where+streamUpBsIMk :: (Monad m) => BS1 a i -> BS1 b i -> z -> m (z, Maybe (BS1 c i))+streamUpBsIMk (BS1 sl _) (BS1 sh _) z = return (z, if sl <= sh then Just (BS1 sl (Iter . max 0 $ lsbZ sl)) else Nothing)+{-# Inline [0] streamUpBsIMk #-}++streamUpBsIStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (SM.Step (t, Maybe s) (t :. s))+streamUpBsIStep l h (z , Nothing) = return $ SM.Done+streamUpBsIStep l h (z,  Just t ) = return $ SM.Yield (z:.t) (z , setSucc l h t)+{-# Inline [0] streamUpBsIStep #-}++streamDownBsIMk :: (Monad m) => BS1 a i -> BS1 b i -> z -> m (z, Maybe (BS1 c i))+streamDownBsIMk (BS1 sl _) (BS1 sh _) z = return (z, if sl <= sh then Just (BS1 sl (Iter . max 0 $ lsbZ sh)) else Nothing)+{-# Inline [0] streamDownBsIMk #-}++streamDownBsIStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (SM.Step (t, Maybe s) (t :. s))+streamDownBsIStep l h (z , Nothing) = return $ SM.Done+streamDownBsIStep l h (z , Just t ) = return $ SM.Yield (z:.t) (z , setPred l h t)+{-# Inline [0] streamDownBsIStep #-}++++-- ** BS2++instance Index (BS2 i j t) where+  linearIndex (BS2 ls li lj) (BS2 hs hi hj) (BS2 s i j) = linearIndex (ls:.li:.lj) (hs:.hi:.hj) (s:.i:.j)+  {-# INLINE linearIndex #-}+  smallestLinearIndex (BS2 s i j) = smallestLinearIndex (s:.i:.j)+  {-# INLINE smallestLinearIndex #-}+  largestLinearIndex (BS2 s i j) = largestLinearIndex (s:.i:.j)+  {-# INLINE largestLinearIndex #-}+  size (BS2 ls li lj) (BS2 hs hi hj) = size (ls:.li:.lj) (hs:.hi:.hj)+  {-# INLINE size #-}+  inBounds (BS2 ls li lj) (BS2 hs hi hj) (BS2 s i j) = inBounds (ls:.li:.lj) (hs:.hi:.hj) (s:.i:.j)+  {-# INLINE inBounds #-}++instance IndexStream z => IndexStream (z:.BS2 i j I) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpBsIiMk   l h) (streamUpBsIiStep   l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownBsIiMk l h) (streamDownBsIiStep l h) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++instance IndexStream z => IndexStream (z:.BS2 i j O) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamDownBsIiMk l h) (streamDownBsIiStep l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamUpBsIiMk   l h) (streamUpBsIiStep   l h) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++instance IndexStream z => IndexStream (z:.BS2 i j C) where+  streamUp   (ls:.l) (hs:.h) = flatten (streamUpBsIiMk   l h) (streamUpBsIiStep   l h) $ streamUp   ls hs+  streamDown (ls:.l) (hs:.h) = flatten (streamDownBsIiMk l h) (streamDownBsIiStep l h) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++instance IndexStream (Z:.BS2 i j t) => IndexStream (BS2 i j t)++streamUpBsIiMk :: (Monad m) => BS2 a b i -> BS2 c d i -> z -> m (z, Maybe (BS2 e f i))+streamUpBsIiMk (BS2 sl _ _) (BS2 sh _ _) z+  | sl > sh   = return (z , Nothing)+  | cl == 0   = return (z , Just (BS2 0 0 0))+  | cl == 1   = let i = lsbZ sl+                in  return (z , Just (BS2 sl (Iter i) (Iter i)))+  | otherwise = let i = lsbZ sl; j = lsbZ (sl `clearBit` i)+                in  return (z , Just (BS2 sl (Iter i) (Iter j)))+  where cl = popCount sl+{-# Inline [0] streamUpBsIiMk #-}++streamUpBsIiStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (SM.Step (t, Maybe s) (t :. s))+streamUpBsIiStep l h (z , Nothing) = return $ SM.Done+streamUpBsIiStep l h (z , Just t ) = return $ SM.Yield (z:.t) (z , setSucc l h t)+{-# Inline [0] streamUpBsIiStep #-}++streamDownBsIiMk :: (Monad m) => BS2 a b i -> BS2 c d i -> z -> m (z, Maybe (BS2 e f i))+streamDownBsIiMk (BS2 sl _ _) (BS2 sh _ _) z+  | sl > sh   = return (z , Nothing)+  | ch == 0   = return (z , Just (BS2 0 0 0))+  | ch == 1   = let i = lsbZ sh+                in  return (z , Just (BS2 sh (Iter i) (Iter i)))+  | otherwise = let i = lsbZ sh; j = lsbZ sh+                in  return (z , Just (BS2 sh (Iter i) (Iter j)))+  where ch = popCount sh+{-# Inline [0] streamDownBsIiMk #-}++streamDownBsIiStep :: (Monad m, SetPredSucc s) => s -> s -> (t, Maybe s) -> m (SM.Step (t, Maybe s) (t :. s))+streamDownBsIiStep l h (z , Nothing) = return $ SM.Done+streamDownBsIiStep l h (z , Just t ) = return $ SM.Yield (z:.t) (z , setPred l h t)+{-# Inline [0] streamDownBsIiStep #-}++++-- ** Set predecessor and successor++instance SetPredSucc (BitSet t) where   setSucc l h s     | cs > ch                        = Nothing     | Just s' <- popPermutation ch s = Just s'@@ -260,59 +388,59 @@           cs = popCount s   {-# Inline setPred #-} -instance SetPredSucc (BitSet:>Interface i) where-  setSucc (l:>il) (h:>ih) (s:>Iter is)-    | cs > ch                         = Nothing-    | Just is' <- maybeNextActive is s     = Just (s:>Iter is')-    | Just s'  <- popPermutation ch s = Just (s':>Iter (lsbZ s'))-    | cs >= ch                        = Nothing-    | cs < ch                         = let s' = BitSet $ 2^(cs+1)-1 in Just (s' :> Iter (lsbZ s'))+instance SetPredSucc (BS1 i t) where+  setSucc (BS1 l il) (BS1 h ih) (BS1 s (Iter is))+    | cs > ch                          = Nothing+    | Just is' <- maybeNextActive is s = Just $ BS1 s  (Iter is')+    | Just s'  <- popPermutation ch s  = Just $ BS1 s' (Iter $ lsbZ s')+    | cs >= ch                         = Nothing+    | cs < ch                          = let s' = BitSet $ 2^(cs+1)-1 in Just (BS1 s' (Iter (lsbZ s')))     where ch = popCount h           cs = popCount s   {-# Inline setSucc #-}-  setPred (l:>il) (h:>ih) (s:>Iter is)-    | cs < cl                         = Nothing-    | Just is' <- maybeNextActive is s     = Just (s:>Iter is')-    | Just s'  <- popPermutation ch s = Just (s':>Iter (lsbZ s'))-    | cs <= cl                        = Nothing-    | cs > cl                         = let s' = BitSet $ 2^(cs-1)-1 in Just (s' :> Iter (max 0 $ lsbZ s'))+  setPred (BS1 l il) (BS1 h ih) (BS1 s (Iter is))+    | cs < cl                          = Nothing+    | Just is' <- maybeNextActive is s = Just $ BS1 s  (Iter is')+    | Just s'  <- popPermutation ch s  = Just $ BS1 s' (Iter  $ lsbZ s')+    | cs <= cl                         = Nothing+    | cs > cl                          = let s' = BitSet $ 2^(cs-1)-1 in Just (BS1 s' (Iter (max 0 $ lsbZ s')))     where cl = popCount l           ch = popCount h           cs = popCount s   {-# Inline setPred #-} -instance SetPredSucc (BitSet:>Interface i:>Interface j) where-  setSucc (l:>il:>jl) (h:>ih:>jh) (s:>Iter is:>Iter js)+instance SetPredSucc (BS2 i j t) where+  setSucc (BS2 l il jl) (BS2 h ih jh) (BS2 s (Iter is) (Iter js))     -- early termination     | cs > ch                         = Nothing     -- in case nothing was set, set initial set @1@ with both interfaces     -- pointing to the same element-    | cs == 0                         = Just (1:>0:>0)+    | cs == 0                         = Just (BS2 1 0 0)     -- when only a single element is set, we just permute the population     -- and set the single interface     | cs == 1     , Just s'  <- popPermutation ch s-    , let is' = lsbZ s'          = Just (s':>Iter is':>Iter is')+    , let is' = lsbZ s'          = Just (BS2 s' (Iter is') (Iter is'))     -- try advancing only one of the interfaces, doesn't collide with @is@-    | Just js' <- maybeNextActive js (s `clearBit` is) = Just (s:>Iter is:>Iter js')+    | Just js' <- maybeNextActive js (s `clearBit` is) = Just (BS2 s (Iter is) (Iter js'))     -- advance other interface,      | Just is' <- maybeNextActive is s-    , let js' = lsbZ (s `clearBit` is')      = Just (s:>Iter is':>Iter js')+    , let js' = lsbZ (s `clearBit` is')      = Just (BS2 s (Iter is') (Iter js'))     -- find another permutation of the population     | Just s'  <- popPermutation ch s     , let is' = lsbZ s'-    , Just js' <- maybeNextActive is' s'   = Just (s':>Iter is':>Iter js')+    , Just js' <- maybeNextActive is' s'   = Just (BS2 s' (Iter is') (Iter js'))     -- increasing the population forbidden by upper limit     | cs >= ch                        = Nothing     -- increase population     | cs < ch     , let s' = BitSet $ 2^(cs+1)-1     , let is' = lsbZ s'-    , Just js' <- maybeNextActive is' s'   = Just (s':>Iter is':>Iter js')+    , Just js' <- maybeNextActive is' s'   = Just (BS2 s' (Iter is') (Iter js'))     where ch = popCount h           cs = popCount s   {-# Inline setSucc #-}-  setPred (l:>il:>jl) (h:>ih:>jh) (s:>Iter is:>Iter js)+  setPred (BS2 l il jl) (BS2 h ih jh) (BS2 s (Iter is) (Iter js))     -- early termination     | cs < cl                         = Nothing     -- in case nothing was set, set initial set @1@ with both interfaces@@ -322,27 +450,27 @@     -- and set the single interface     | cs == 1     , Just s'  <- popPermutation ch s-    , let is' = lsbZ s'          = Just (s':>Iter is':>Iter is')+    , let is' = lsbZ s'          = Just (BS2 s' (Iter is') (Iter is'))     -- return the single @0@ set-    | cs == 1                         = Just (0:>0:>0)+    | cs == 1                         = Just (BS2 0 0 0)     -- try advancing only one of the interfaces, doesn't collide with @is@-    | Just js' <- maybeNextActive js (s `clearBit` is) = Just (s:>Iter is:>Iter js')+    | Just js' <- maybeNextActive js (s `clearBit` is) = Just (BS2 s (Iter is) (Iter js'))     -- advance other interface,      | Just is' <- maybeNextActive is s-    , let js' = lsbZ (s `clearBit` is')      = Just (s:>Iter is':>Iter js')+    , let js' = lsbZ (s `clearBit` is')      = Just (BS2 s (Iter is') (Iter js'))     -- find another permutation of the population     | Just s'  <- popPermutation ch s     , let is' = lsbZ s'-    , Just js' <- maybeNextActive is' s'   = Just (s':>Iter is':>Iter js')+    , Just js' <- maybeNextActive is' s'   = Just (BS2 s' (Iter is') (Iter js'))     -- decreasing the population forbidden by upper limit     | cs <= cl                        = Nothing     -- decrease population     | cs > cl && cs > 2     , let s' = BitSet $ 2^(cs-1)-1     , let is' = lsbZ s'-    , Just js' <- maybeNextActive is' s'   = Just (s':>Iter is':>Iter js')+    , Just js' <- maybeNextActive is' s'   = Just (BS2 s' (Iter is') (Iter js'))     -- decrease population to single-element sets-    | cs > cl && cs == 2              = Just (1:>0:>0)+    | cs > cl && cs == 2              = Just (BS2 1 0 0)     where cl = popCount l           ch = popCount h           cs = popCount s@@ -350,11 +478,11 @@   -type instance Mask BitSet = BitSet+type instance Mask (BitSet t)  = BitSet t -type instance Mask (BitSet :> Interface i) = BitSet+type instance Mask (BS1 i t)   = BitSet t -type instance Mask (BitSet :> Interface i :> Interface j) = BitSet+type instance Mask (BS2 i j t) = BitSet t   @@ -368,13 +496,10 @@ deriving instance (Read t   , Read    (Mask t)) => Read    (Fixed t) deriving instance (Show t   , Show    (Mask t)) => Show    (Fixed t) deriving instance (Generic t, Generic (Mask t)) => Generic (Fixed t)+instance (Generic t, Generic (Mask t), Hashable t, Hashable (Mask t)) => Hashable (Fixed t)  instance (Generic t, Generic (Mask t), Binary t   , Binary    (Mask t)) => Binary    (Fixed t) instance (Generic t, Generic (Mask t), Serialize t, Serialize (Mask t)) => Serialize (Fixed t)-{- -- TODO do json instances work automatically here?-instance ToJSON    (Interface t)-instance FromJSON  (Interface t)--}  instance NFData (Fixed t) where   rnf (Fixed m s) = m `seq` s `seq` ()@@ -383,11 +508,11 @@ -- fixed AND that during permutations / increases in popCount we do not set -- an already fixed bit -- as otherwise we lose one in popCount. -testBsS :: BitSet -> Maybe (Fixed BitSet)+testBsS :: BitSet t -> Maybe (Fixed (BitSet t)) testBsS k = setSucc (Fixed 0 0) (Fixed 0 7) (Fixed 4 k) {-# NoInline testBsS #-} -instance SetPredSucc (Fixed BitSet) where+instance SetPredSucc (Fixed (BitSet t)) where   setPred (Fixed _ l) (Fixed _ h) (Fixed !m s) = Fixed m <$> setPred l h (s .&. complement m)   {-# Inline setPred #-}   --setSucc (Fixed _ l) (Fixed _ h) (Fixed !m s) = Fixed m <$> setSucc l h (s .&. complement m)@@ -408,54 +533,54 @@           p   = popShiftL m <$> p''   {-# Inline setSucc #-} -instance SetPredSucc (Fixed (BitSet:>Interface i)) where-  setPred (Fixed _ (l:>li)) (Fixed _ (h:>hi)) (Fixed !m (s:>i))-    | s `testBit` getIter i = (Fixed m . (:> i) . ( `setBit` getIter i)) <$> setPred l h (s .&. complement m)-    | otherwise             = (Fixed m) <$> setPred (l:>li) (h:>hi) ((s .&. complement m):>i)+instance SetPredSucc (Fixed (BS1 i t)) where+  setPred (Fixed _ (BS1 l li)) (Fixed _ (BS1 h hi)) (Fixed !m (BS1 s i))+    | s `testBit` getIter i = (Fixed m . (`BS1` i) . ( `setBit` getIter i)) <$> setPred l h (s .&. complement m)+    | otherwise             = (Fixed m) <$> setPred (BS1 l li) (BS1 h hi) (BS1 (s .&. complement m) i)   {-# Inline setPred #-}-  setSucc (Fixed _ (l:>li)) (Fixed _ (h:>hi)) (Fixed !m (s:>i))-    | s `testBit` getIter i = (Fixed m . (:> i) . ( `setBit` getIter i)) <$> setSucc l h (s .&. complement m)-    | otherwise             = (Fixed m) <$> setSucc (l:>li) (h:>hi) ((s .&. complement m):>i)+  setSucc (Fixed _ (BS1 l li)) (Fixed _ (BS1 h hi)) (Fixed !m (BS1 s i))+    | s `testBit` getIter i = (Fixed m . (`BS1` i) . ( `setBit` getIter i)) <$> setSucc l h (s .&. complement m)+    | otherwise             = (Fixed m) <$> setSucc (BS1 l li) (BS1 h hi) (BS1 (s .&. complement m) i)   {-# Inline setSucc #-} -instance SetPredSucc (Fixed (BitSet:>Interface i:>Interface j)) where-  setPred (Fixed _ (l:>li:>lj)) (Fixed _ (h:>hi:>hj)) (Fixed !m (s:>i:>j))+instance SetPredSucc (Fixed (BS2 i j t)) where+  setPred (Fixed _ (BS2 l li lj)) (Fixed _ (BS2 h hi hj)) (Fixed !m (BS2 s i j))     | s `testBit` getIter i && s `testBit` getIter j-    = (Fixed m . (\z       -> (z `setBit` getIter i `setBit` getIter j:>i:>j ))) <$> setPred l h (s .&. complement m)+    = (Fixed m . (\z       -> BS2 (z `setBit` getIter i `setBit` getIter j) i j)) <$> setPred l h (s .&. complement m)     | s `testBit` getIter i-    = (Fixed m . (\(z:>j') -> (z `setBit` getIter i                   :>i:>j'))) <$> setPred (l:>lj) (h:>hj) (s .&. complement m :>j)+    = (Fixed m . (\(BS1 z j') -> BS2 (z `setBit` getIter i) i j')) <$> setPred (BS1 l lj) (BS1 h hj) (BS1 (s .&. complement m) j)     | s `testBit` getIter j-    = (Fixed m . (\(z:>i') -> (z `setBit` getIter j                   :>i':>j))) <$> setPred (l:>li) (h:>hi) (s .&. complement m :>i)+    = (Fixed m . (\(BS1 z i') -> BS2 (z `setBit` getIter j) i' j)) <$> setPred (BS1 l li) (BS1 h hi) (BS1 (s .&. complement m) i)   {-# Inline setPred #-}-  setSucc (Fixed _ (l:>li:>lj)) (Fixed _ (h:>hi:>hj)) (Fixed !m (s:>i:>j))+  setSucc (Fixed _ (BS2 l li lj)) (Fixed _ (BS2 h hi hj)) (Fixed !m (BS2 s i j))     | s `testBit` getIter i && s `testBit` getIter j-    = (Fixed m . (\z       -> (z `setBit` getIter i `setBit` getIter j:>i:>j ))) <$> setSucc l h (s .&. complement m)+    = (Fixed m . (\z       -> BS2 (z `setBit` getIter i `setBit` getIter j) i j)) <$> setSucc l h (s .&. complement m)     | s `testBit` getIter i-    = (Fixed m . (\(z:>j') -> (z `setBit` getIter i                   :>i:>j'))) <$> setSucc (l:>lj) (h:>hj) (s .&. complement m :>j)+    = (Fixed m . (\(BS1 z j') -> BS2 (z `setBit` getIter i) i j')) <$> setSucc (BS1 l lj) (BS1 h hj) (BS1 (s .&. complement m) j)     | s `testBit` getIter j-    = (Fixed m . (\(z:>i') -> (z `setBit` getIter j                   :>i':>j))) <$> setSucc (l:>li) (h:>hi) (s .&. complement m :>i)+    = (Fixed m . (\(BS1 z i') -> BS2 (z `setBit` getIter j) i' j)) <$> setSucc (BS1 l li) (BS1 h hi) (BS1 (s .&. complement m) i)   {-# Inline setSucc #-}   -instance ApplyMask BitSet where+instance ApplyMask (BitSet t) where   applyMask = popShiftL   {-# Inline applyMask #-} -instance ApplyMask (BitSet :> Interface i) where-  applyMask m (s:>i)-    | popCount s == 0 = 0:>0-    | otherwise       = popShiftL m s :> (Iter . getBitSet . popShiftL m . BitSet $ 2 ^ getIter i)+instance ApplyMask (BS1 i t) where+  applyMask m (BS1 s i)+    | popCount s == 0 = BS1 0 0+    | otherwise       = BS1 (popShiftL m s) (Iter . getBitSet . popShiftL m . BitSet $ 2 ^ getIter i)   {-# Inline applyMask #-} -instance ApplyMask (BitSet :> Interface i :> Interface j) where-  applyMask m (s:>i:>j)-    | popCount s == 0 = 0:>0:>0-    | popCount s == 1 = s' :> i' :> Iter (getIter i')-    | otherwise       = s' :> i' :> j'+instance ApplyMask (BS2 i j t) where+  applyMask m (BS2 s i j)+    | popCount s == 0 = BS2 0 0 0+    | popCount s == 1 = BS2 s' i' (Iter $ getIter i')+    | otherwise       = BS2 s' i' j'     where s' = popShiftL m s-          i' = Iter . getBitSet . popShiftL m . BitSet $ 2 ^ getIter i-          j' = Iter . getBitSet . popShiftL m . BitSet $ 2 ^ getIter j+          i' = Iter . getBitSet . popShiftL m $ (BitSet $ 2 ^ getIter i :: BitSet t)+          j' = Iter . getBitSet . popShiftL m $ (BitSet $ 2 ^ getIter j :: BitSet t)   {-# Inline applyMask #-}  @@ -466,43 +591,43 @@   arbitrary = Fixed <$> arbitrary <*> arbitrary   shrink (Fixed m s) = [ Fixed m' s' | m' <- shrink m, s' <- shrink s ] -instance Arbitrary BitSet where+instance Arbitrary (BitSet t) where   arbitrary = BitSet <$> choose (0,2^arbitraryBitSetMax-1)   shrink s = let s' = [ s `clearBit` a | a <- activeBitsL s ]              in  s' ++ concatMap shrink s' -instance Arbitrary (BitSet:>Interface i) where+instance Arbitrary (BS1 i t) where   arbitrary = do     s <- arbitrary     if s==0-      then return (s:>Iter 0)+      then return (BS1 s 0)       else do i <- elements $ activeBitsL s-              return (s:>Iter i)-  shrink (s:>i) =-    let s' = [ (s `clearBit` a:>i)+              return (BS1 s $ Iter i)+  shrink (BS1 s i) =+    let s' = [ BS1 (s `clearBit` a) i              | a <- activeBitsL s              , Iter a /= i ]-             ++ [ 0 :> Iter 0 | popCount s == 1 ]+             ++ [ BS1 0 0 | popCount s == 1 ]     in  s' ++ concatMap shrink s' -instance Arbitrary (BitSet:>Interface i:>Interface j) where+instance Arbitrary (BS2 i j t) where   arbitrary = do     s <- arbitrary     case (popCount s) of-      0 -> return (s:>Iter 0:>Iter 0)+      0 -> return (BS2 s 0 0)       1 -> do i <- elements $ activeBitsL s-              return (s:>Iter i:>Iter i)+              return (BS2 s (Iter i) (Iter i))       _ -> do i <- elements $ activeBitsL s               j <- elements $ activeBitsL (s `clearBit` i)-              return (s:>Iter i:>Iter j)-  shrink (s:>i:>j) =-    let s' = [ (s `clearBit` a:>i:>j)+              return (BS2 s (Iter i) (Iter j))+  shrink (BS2 s i j) =+    let s' = [ BS2 (s `clearBit` a) i j              | a <- activeBitsL s              , Iter a /= i, Iter a /= j ]-             ++ [ 0 `setBit` a :> Iter a :> Iter a+             ++ [ BS2 (0 `setBit` a) (Iter a) (Iter a)                 | popCount s == 2                 , a <- activeBitsL s ]-             ++ [ 0 :> Iter 0 :> Iter 0+             ++ [ BS2 0 0 0                 | popCount s == 1 ]     in  s' ++ concatMap shrink s' 
Data/PrimitiveArray/Index/Subword.hs view
@@ -7,15 +7,17 @@ import Control.DeepSeq (NFData(..)) import Data.Aeson (FromJSON,ToJSON) import Data.Binary (Binary)+import Data.Hashable (Hashable) import Data.Serialize (Serialize)-import Data.Vector.Fusion.Stream.Monadic (Step(..), flatten, map)-import Data.Vector.Fusion.Stream.Size+import Data.Vector.Fusion.Stream.Monadic (Step(..), map) import Data.Vector.Unboxed.Deriving import GHC.Generics (Generic)-import Test.QuickCheck (Arbitrary(..), choose) import Prelude hiding (map)+import Test.QuickCheck (Arbitrary(..), choose)  import Data.PrimitiveArray.Index.Class+import Data.PrimitiveArray.Index.IOC+import Data.PrimitiveArray.Vector.Compat   @@ -27,27 +29,42 @@ -- the smallest. We do, however, use (0,0) as the smallest as (0,k) gives -- successively smaller upper triangular parts. -newtype Subword = Subword {fromSubword :: (Int:.Int)}+newtype Subword t = Subword {fromSubword :: (Int:.Int)}   deriving (Eq,Ord,Show,Generic,Read)  derivingUnbox "Subword"-  [t| Subword -> (Int,Int) |]+  [t| forall t . Subword t -> (Int,Int) |]   [| \ (Subword (i:.j)) -> (i,j) |]   [| \ (i,j) -> Subword (i:.j) |] -instance Binary    Subword-instance Serialize Subword-instance FromJSON  Subword-instance ToJSON    Subword+instance Binary    (Subword t)+instance Serialize (Subword t)+instance FromJSON  (Subword t)+instance ToJSON    (Subword t)+instance Hashable  (Subword t) -instance NFData Subword where+instance NFData (Subword t) where   rnf (Subword (i:.j)) = i `seq` rnf j   {-# Inline rnf #-} -subword :: Int -> Int -> Subword+-- | Create a @Subword t@ where @t@ is inferred.++subword :: Int -> Int -> Subword t subword i j = Subword (i:.j) {-# INLINE subword #-} +subwordI :: Int -> Int -> Subword I+subwordI i j = Subword (i:.j)+{-# INLINE subwordI #-}++subwordO :: Int -> Int -> Subword O+subwordO i j = Subword (i:.j)+{-# INLINE subwordO #-}++subwordC :: Int -> Int -> Subword C+subwordC i j = Subword (i:.j)+{-# INLINE subwordC #-}+ -- | triangular numbers -- -- A000217@@ -59,7 +76,7 @@ -- | Size of an upper triangle starting at 'i' and ending at 'j'. "(0,N)" what -- be the normal thing to use. -upperTri :: Subword -> Int+upperTri :: Subword t -> Int upperTri (Subword (i:.j)) = triangularNumber $ j-i+1 {-# INLINE upperTri #-} @@ -69,19 +86,19 @@ -- -- TODO probably doesn't work right with non-zero base ?! -subwordIndex :: Subword -> Subword -> Int+subwordIndex :: Subword s -> Subword t -> Int subwordIndex (Subword (l:.n)) (Subword (i:.j)) = adr n (i,j) -- - adr n (l,n)   where     adr n (i,j) = (n+1)*i - triangularNumber i + j {-# INLINE subwordIndex #-} -subwordFromIndex :: Subword -> Int -> Subword+subwordFromIndex :: Subword s -> Int -> Subword t subwordFromIndex = error "subwordFromIndex not implemented" {-# INLINE subwordFromIndex #-}   -instance Index Subword where+instance Index (Subword t) where   linearIndex _ h i = subwordIndex h i   {-# Inline linearIndex #-}   smallestLinearIndex _ = error "still needed?"@@ -93,8 +110,17 @@   inBounds _ (Subword (_:.h)) (Subword (i:.j)) = 0<=i && i<=j && j<=h   {-# Inline inBounds #-} -instance IndexStream z => IndexStream (z:.Subword) where-  streamUp (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten mk step Unknown $ streamUp ls hs+-- | @Subword I@ (inside)++instance IndexStream z => IndexStream (z:.Subword I) where+  streamUp   (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten (streamUpMk     h) (streamUpStep   l h) $ streamUp   ls hs+  streamDown (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten (streamDownMk l h) (streamDownStep   h) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++{-+instance IndexStream z => IndexStream (z:.Subword I) where+  streamUp (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten mk step $ streamUp ls hs     where mk z = return (z,h,h)           step (z,i,j)             | i < l     = return $ Done@@ -103,7 +129,7 @@           {-# Inline [0] mk   #-}           {-# Inline [0] step #-}   {-# Inline streamUp #-}-  streamDown (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten mk step Unknown $ streamDown ls hs+  streamDown (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten mk step $ streamDown ls hs     where mk z = return (z,l,h)           step (z,i,j)             | i > h     = return $ Done@@ -112,16 +138,58 @@           {-# Inline [0] mk   #-}           {-# Inline [0] step #-}   {-# Inline streamDown #-}+-} --- Default methods don't inline in a good way!+-- | @Subword O@ (outside).+--+-- Note: @streamUp@ really needs to use @streamDownMk@ / @streamDownStep@+-- for the right order of indices! -instance IndexStream Subword where+instance IndexStream z => IndexStream (z:.Subword O) where+  streamUp   (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten (streamDownMk l h) (streamDownStep   h) $ streamUp   ls hs+  streamDown (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten (streamUpMk     h) (streamUpStep   l h) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++instance IndexStream z => IndexStream (z:.Subword C) where+  streamUp   (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten (streamUpMk     h) (streamUpStep   l h) $ streamUp   ls hs+  streamDown (ls:.Subword (l:._)) (hs:.Subword (_:.h)) = flatten (streamDownMk l h) (streamDownStep   h) $ streamDown ls hs+  {-# Inline streamUp #-}+  {-# Inline streamDown #-}++-- | generic @mk@ for @streamUp@ / @streamDown@++streamUpMk h z = return (z,h,h)+{-# Inline [0] streamUpMk #-}++streamUpStep l h (z,i,j)+  | i < l     = return $ Done+  | j > h     = return $ Skip (z,i-1,i-1)+  | otherwise = return $ Yield (z:.subword i j) (z,i,j+1)+{-# Inline [0] streamUpStep #-}++streamDownMk l h z = return (z,l,h)+{-# Inline [0] streamDownMk #-}++streamDownStep h (z,i,j)+  | i > h     = return $ Done+  | j < i     = return $ Skip (z,i+1,h)+  | otherwise = return $ Yield (z:.subword i j) (z,i,j-1)+{-# Inline [0] streamDownStep #-}++instance (IndexStream (Z:.Subword t)) => IndexStream (Subword t)+{- where   streamUp l h = map (\(Z:.i) -> i) $ streamUp (Z:.l) (Z:.h)   {-# INLINE streamUp #-}   streamDown l h = map (\(Z:.i) -> i) $ streamDown (Z:.l) (Z:.h)   {-# INLINE streamDown #-}+-} -instance Arbitrary Subword where+--instance IndexStream (Subword O)++--instance IndexStream (Subword C)++instance Arbitrary (Subword t) where   arbitrary = do     a <- choose (0,100)     b <- choose (0,100)
+ Data/PrimitiveArray/Index/Unit.hs view
@@ -0,0 +1,62 @@++-- | Unit indices admit a single element to be memoized. We can't use @()@+-- because we want to attach phantom types.++module Data.PrimitiveArray.Index.Unit where++import Control.DeepSeq (NFData(..))+import Data.Aeson (FromJSON,ToJSON)+import Data.Binary (Binary)+import Data.Hashable (Hashable)+import Data.Serialize (Serialize)+import Data.Vector.Fusion.Stream.Monadic (Step(..), map)+import Data.Vector.Unboxed.Deriving+import GHC.Generics (Generic)+import Prelude hiding (map)+import Test.QuickCheck (Arbitrary(..), choose)++import Data.PrimitiveArray.Index.Class++++data Unit t = Unit+  deriving (Eq,Ord,Show,Generic,Read)++derivingUnbox "Unit"+  [t| forall t . Unit t -> () |]+  [| \ Unit -> ()   |]+  [| \ ()   -> Unit |]++instance Binary    (Unit t)+instance Serialize (Unit t)+instance FromJSON  (Unit t)+instance ToJSON    (Unit t)+instance Hashable  (Unit t)++instance NFData (Unit t) where+  rnf Unit = ()+  {-# Inline rnf #-}++instance Index (Unit t) where+  linearIndex _ _ _ = 0+  {-# Inline linearIndex #-}+  smallestLinearIndex _ = 0+  {-# Inline smallestLinearIndex #-}+  largestLinearIndex _ = 0+  {-# Inline largestLinearIndex #-}+  size _ _ = 1+  {-# Inline size #-}+  inBounds _ _ _ = True+  {-# Inline inBounds #-}++instance IndexStream z => IndexStream (z:.Unit t) where+  streamUp (ls:.Unit) (hs:.Unit) = map (\z -> z:.Unit) $ streamUp ls hs+  {-# Inline streamUp #-}+  streamDown (ls:.Unit) (hs:.Unit) = map (\z -> z:.Unit) $ streamDown ls hs+  {-# Inline streamDown #-}++instance (IndexStream (Z:.Unit t)) => IndexStream (Unit t)++instance Arbitrary (Unit t) where+  arbitrary = pure Unit+  shrink Unit = []
Data/PrimitiveArray/QuickCheck/Index/Set.hs view
@@ -7,6 +7,7 @@ import Debug.Trace import Test.QuickCheck hiding (Fixed(..), (.&.)) +import Data.PrimitiveArray.Index.IOC import Data.PrimitiveArray.Index.Set  @@ -15,7 +16,7 @@ -- as it is? The mask should actually freeze-fix those bits, where we are -- set to @1@! -prop_Fixed_BitSet_setSucc (u :: Word, Fixed m s :: Fixed BitSet) = traceShow (tgo, tsu) $ tgo == tsu+prop_Fixed_BitSet_setSucc (u :: Word, Fixed m s :: Fixed (BitSet I)) = traceShow (tgo, tsu) $ tgo == tsu   where tgo = go s         tsu = (getFixed <$> setSucc (Fixed 0 0) (Fixed 0 h) (Fixed m s))         fb1 = m .&. s -- fixed bits to 1
+ Data/PrimitiveArray/Vector/Compat.hs view
@@ -0,0 +1,25 @@++module Data.PrimitiveArray.Vector.Compat+  ( flatten+  , Size(..)+  ) where++import qualified Data.Vector.Fusion.Stream.Monadic as SM++#if MIN_VERSION_vector(0,11,0)+import Data.Vector.Fusion.Bundle.Size+#else+import Data.Vector.Fusion.Stream.Size+#endif++++flatten :: Monad m => (a -> m s) -> (s -> m (SM.Step s b)) -> SM.Stream m a -> SM.Stream m b+{-# Inline flatten #-}++#if MIN_VERSION_vector(0,11,0)+flatten = SM.flatten+#else+flatten = \mk step -> SM.flatten mk step Unknown+#endif+
PrimitiveArray.cabal view
@@ -1,24 +1,27 @@ Name:           PrimitiveArray-Version:        0.6.1.0+Version:        0.7.0.0 License:        BSD3 License-file:   LICENSE Maintainer:     choener@bioinf.uni-leipzig.de author:         Christian Hoener zu Siederdissen, 2011-2015 copyright:      Christian Hoener zu Siederdissen, 2011-2015-homepage:       http://www.bioinf.uni-leipzig.de/Software/gADP/ homepage:       https://github.com/choener/PrimitiveArray bug-reports:    https://github.com/choener/PrimitiveArray/issues Stability:      Experimental Category:       Data Build-type:     Simple Cabal-version:  >=1.10.0-tested-with:    GHC == 7.8.4, GHC == 7.10.1+tested-with:    GHC == 7.8.4, GHC == 7.10.2 Synopsis:       Efficient multidimensional arrays Description:+                <http://www.bioinf.uni-leipzig.de/Software/gADP/ generalized Algebraic Dynamic Programming>+                .                 This library provides efficient multidimensional arrays. Import                 @Data.PrimitiveArray@ for indices, lenses, and arrays.                 .-                For ADPfusion users, the library also provides the machinary to+                For+                <http://www.bioinf.uni-leipzig.de/Software/gADP/ generalized ADP>+                users, the library also provides the machinary to                 fill tables in the correct order required by usual CYK-style                 parsers, or regular grammars (used e.g. in alignment                 algorithms). This means that unless your grammar require a@@ -45,32 +48,36 @@     Data.PrimitiveArray.FillTables     Data.PrimitiveArray.Index     Data.PrimitiveArray.Index.Class-    Data.PrimitiveArray.Index.Complement     Data.PrimitiveArray.Index.Int-    Data.PrimitiveArray.Index.Outside+    Data.PrimitiveArray.Index.IOC     Data.PrimitiveArray.Index.PhantomInt     Data.PrimitiveArray.Index.Point     Data.PrimitiveArray.Index.Set     Data.PrimitiveArray.Index.Subword+    Data.PrimitiveArray.Index.Unit     Data.PrimitiveArray.QuickCheck.Index.Set+    Data.PrimitiveArray.Vector.Compat   build-depends: base                     >= 4.7      && < 4.9-               , aeson                    >= 0.8      && < 0.10+               , aeson                    >= 0.8      && < 0.11                , binary                   >= 0.7      && < 0.8                , bits                     >= 0.4      && < 0.5                , cereal                   >= 0.4      && < 0.5                , deepseq                  >= 1.3      && < 1.5-               , OrderedBits              >= 0.0.0.1  && < 0.0.1.0+               , hashable                 >= 1.2      && < 1.3+               , OrderedBits              >= 0.0.0.3  && < 0.0.2.0                , primitive                >= 0.5.4    && < 0.7                , QuickCheck               >= 2.7      && < 2.9-               , vector                   >= 0.10     && < 0.11+               , vector                   >= 0.10     && < 0.12                , vector-binary-instances  >= 0.2      && < 0.3                , vector-th-unbox          >= 0.2      && < 0.3   default-extensions: BangPatterns+                    , CPP                     , DefaultSignatures                     , DeriveDataTypeable                     , DeriveGeneric                     , FlexibleContexts                     , FlexibleInstances+                    , GADTs                     , GeneralizedNewtypeDeriving                     , MultiParamTypeClasses                     , RankNTypes@@ -99,7 +106,8 @@     tests   default-language:     Haskell2010-  default-extensions: TemplateHaskell+  default-extensions: CPP+                    , TemplateHaskell   build-depends: base                , PrimitiveArray                , QuickCheck
README.md view
@@ -2,7 +2,7 @@  # PrimitiveArray -[*generalized ADPfusion Homepage*](http://www.bioinf.uni-leipzig.de/Software/gADP/)+[*generalized Algebraic Dynamic Programming Homepage*](http://www.bioinf.uni-leipzig.de/Software/gADP/)  PrimitiveArray provides operations on multi-dimensional arrays. Internally, the representation is based on the vector library, while the multi-dimensional
changelog.md view
@@ -1,3 +1,16 @@+0.7.0.0+-------++- vector <= 0.11 support; including compatibility layer+- redesigned Index structures (for dealing with Inside/Outside/Complement)++0.6.1.1+-------++- Hashable instances for all index structures+- Hashable instances for Unboxed and Boxed arrays. *These require Hashable+  instances for vectors, which are not available by default*+ 0.6.1.0 -------