-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A type level predicate ranging over strict types -- -- A type class for types T where forall x :: T . rnf x = ⊥ <=> -- rwhnf x = ⊥ @package strict-types @version 0.1.2 -- | Type constraints and patterns for strict types. module Type.Strict -- | A pattern that matches Strict types only -- | A pattern that matches NFData types only and forces values to -- rigid normal form -- | A constraint that is satisfied only by strict types. -- -- A type T is strict if -- --
--   ∀x :: T . rnf x = ⊥ <=> rwhnf x = ⊥
--   
-- -- Mutually recursive types are experimentally supported but non regular -- types are not. -- | An empty class to constrain strict types. An instance is an unchecked -- promise that a type is fully strict. No instances are needed for -- generic non-nested datatypes. -- -- Define an instance as follows: -- --
--   instance StrictType seen Foo
--   
class StrictType (seen :: [*]) a instance Type.Strict.IsDecidedStrict t c f 'GHC.Generics.DecidedStrict instance Type.Strict.IsDecidedStrict t c f 'GHC.Generics.DecidedUnpack instance (TypeError ...) => Type.Strict.IsDecidedStrict (t : tt) c 'GHC.Base.Nothing 'GHC.Generics.DecidedLazy instance (TypeError ...) => Type.Strict.IsDecidedStrict (t : tt) c ('GHC.Base.Just f) 'GHC.Generics.DecidedLazy instance Type.Strict.StrictType seen GHC.Types.Char instance Type.Strict.StrictType seen GHC.Types.Double instance Type.Strict.StrictType seen GHC.Types.Int instance Type.Strict.StrictType seen GHC.Int.Int8 instance Type.Strict.StrictType seen GHC.Int.Int16 instance Type.Strict.StrictType seen GHC.Int.Int32 instance Type.Strict.StrictType seen GHC.Int.Int64 instance Type.Strict.StrictType seen GHC.Integer.Type.Integer instance Type.Strict.StrictType seen GHC.Types.Word instance Type.Strict.StrictType seen GHC.Word.Word8 instance Type.Strict.StrictType seen GHC.Word.Word16 instance Type.Strict.StrictType seen GHC.Word.Word32 instance Type.Strict.StrictType seen GHC.Word.Word64 instance Type.Strict.StrictType seen Data.ByteString.Internal.ByteString instance Type.Strict.StrictType seen Data.Text.Internal.Text instance Type.Strict.StrictType seen a => Type.Strict.StrictType seen (Data.Hashable.Class.Hashed a) instance Type.Strict.StrictType seen (Data.Array.Base.UArray ix v) instance Type.Strict.StrictType seen (Data.Array.Storable.Internals.StorableArray ix v) instance Type.Strict.StrictType seen k => Type.Strict.StrictType seen (Data.Set.Base.Set k) instance Type.Strict.StrictType seen k => Type.Strict.StrictType seen (Data.HashSet.HashSet k) instance Type.Strict.StrictType seen (Data.Vector.Unboxed.Base.Vector a) instance Type.Strict.StrictType seen (Data.Vector.Unboxed.Base.MVector s a) instance Type.Strict.StrictType seen (Data.Vector.Storable.Vector a) instance Type.Strict.StrictType seen (Data.Vector.Storable.Mutable.MVector s a) instance Type.Strict.StrictType seen (Data.Vector.Primitive.Vector a) instance Type.Strict.StrictType seen (Data.Vector.Primitive.Mutable.MVector s a) instance Type.Strict.StrictRep (d : seen) (GHC.Generics.Rep d) => Type.Strict.StrictType seen d -- | A wrapper around HashMap from the unordered-containers package, -- with the aim of fixing the strictness of the type class operations, to -- obtain a fully strict (observationally) data structure. module Data.Strict.HashMap newtype HashMap k a Strict :: HashMap k a -> HashMap k a [getStrict] :: HashMap k a -> HashMap k a adjust :: (Hashable k2, Eq k2) => (a2 -> a2) -> k2 -> HashMap k2 a2 -> HashMap k2 a2 alter :: (Hashable k2, Eq k2) => (Maybe a2 -> Maybe a2) -> k2 -> HashMap k2 a2 -> HashMap k2 a2 delete :: (Hashable k2, Eq k2) => k2 -> HashMap k2 a2 -> HashMap k2 a2 difference :: (Hashable k3, Eq k3) => HashMap k3 a3 -> HashMap k3 w -> HashMap k3 a3 differenceWith :: (Hashable k3, Eq k3) => (a3 -> w -> Maybe a3) -> HashMap k3 a3 -> HashMap k3 w -> HashMap k3 a3 elems :: HashMap k v -> [v] empty :: HashMap k a filter :: (a2 -> Bool) -> HashMap k2 a2 -> HashMap k2 a2 filterWithKey :: (k2 -> a2 -> Bool) -> HashMap k2 a2 -> HashMap k2 a2 fromList :: (Hashable k, Eq k) => [(k, a)] -> HashMap k a fromListWith :: (Hashable k, Eq k) => (a -> a -> a) -> [(k, a)] -> HashMap k a foldl' :: (HashMap k2 a2 -> v -> HashMap k2 a2) -> HashMap k2 a2 -> HashMap k v -> HashMap k2 a2 foldlWithKey' :: (HashMap k2 a2 -> k -> v -> HashMap k2 a2) -> HashMap k2 a2 -> HashMap k v -> HashMap k2 a2 foldr :: (v -> HashMap k2 a2 -> HashMap k2 a2) -> HashMap k2 a2 -> HashMap k v -> HashMap k2 a2 foldrWithKey :: (k -> v -> HashMap k2 a2 -> HashMap k2 a2) -> HashMap k2 a2 -> HashMap k v -> HashMap k2 a2 insert :: (Hashable k2, Eq k2) => k2 -> a2 -> HashMap k2 a2 -> HashMap k2 a2 insertWith :: (Hashable k2, Eq k2) => (a2 -> a2 -> a2) -> k2 -> a2 -> HashMap k2 a2 -> HashMap k2 a2 intersection :: (Hashable k3, Eq k3) => HashMap k3 a3 -> HashMap k3 w -> HashMap k3 a3 intersectionWith :: (Hashable k3, Eq k3) => (v1 -> v2 -> a3) -> HashMap k3 v1 -> HashMap k3 v2 -> HashMap k3 a3 intersectionWithKey :: (Hashable k3, Eq k3) => (k3 -> v1 -> v2 -> a3) -> HashMap k3 v1 -> HashMap k3 v2 -> HashMap k3 a3 keys :: HashMap k v -> [k] lookup :: (Hashable k, Eq k) => k -> HashMap k v -> Maybe v lookupDefault :: (Hashable k, Eq k) => c -> k -> HashMap k c -> c map :: (v1 -> a2) -> HashMap k2 v1 -> HashMap k2 a2 mapWithKey :: (k2 -> v1 -> a2) -> HashMap k2 v1 -> HashMap k2 a2 mapMaybe :: (v1 -> Maybe a2) -> HashMap k2 v1 -> HashMap k2 a2 mapMaybeWithKey :: (k2 -> v1 -> Maybe a2) -> HashMap k2 v1 -> HashMap k2 a2 member :: (Hashable k, Eq k) => k -> HashMap k a -> Bool null :: HashMap k v -> Bool size :: HashMap k v -> Int singleton :: Hashable k => k -> a -> HashMap k a toList :: HashMap k v -> [(k, v)] traverseWithKey :: Applicative f => (k -> v1 -> f a) -> HashMap k v1 -> f (HashMap k a) union :: (Hashable k3, Eq k3) => HashMap k3 a3 -> HashMap k3 a3 -> HashMap k3 a3 unions :: (Hashable k, Eq k) => [HashMap k a] -> HashMap k a unionWith :: (Hashable k3, Eq k3) => (a3 -> a3 -> a3) -> HashMap k3 a3 -> HashMap k3 a3 -> HashMap k3 a3 unionWithKey :: (Hashable k3, Eq k3) => (k3 -> a3 -> a3 -> a3) -> HashMap k3 a3 -> HashMap k3 a3 -> HashMap k3 a3 update :: (Hashable k2, Eq k2) => (a2 -> Maybe a2) -> k2 -> HashMap k2 a2 -> HashMap k2 a2 (!) :: (Hashable k, Eq k) => HashMap k v -> k -> v instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k) => GHC.Base.Monoid (Data.Strict.HashMap.HashMap k a) instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k) => Data.Semigroup.Semigroup (Data.Strict.HashMap.HashMap k a) instance Data.Foldable.Foldable (Data.Strict.HashMap.HashMap k) instance Data.Hashable.Class.Hashable2 Data.Strict.HashMap.HashMap instance Data.Hashable.Class.Hashable k => Data.Hashable.Class.Hashable1 (Data.Strict.HashMap.HashMap k) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable k) => Data.Hashable.Class.Hashable (Data.Strict.HashMap.HashMap k a) instance Data.Functor.Classes.Show2 Data.Strict.HashMap.HashMap instance Data.Functor.Classes.Eq2 Data.Strict.HashMap.HashMap instance GHC.Show.Show k => Data.Functor.Classes.Show1 (Data.Strict.HashMap.HashMap k) instance GHC.Classes.Eq k => Data.Functor.Classes.Eq1 (Data.Strict.HashMap.HashMap k) instance (GHC.Show.Show a, GHC.Show.Show k) => GHC.Show.Show (Data.Strict.HashMap.HashMap k a) instance (GHC.Classes.Eq a, GHC.Classes.Eq k) => GHC.Classes.Eq (Data.Strict.HashMap.HashMap k a) instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData k) => Control.DeepSeq.NFData (Data.Strict.HashMap.HashMap k a) instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k, Data.Data.Data a, Data.Data.Data k) => Data.Data.Data (Data.Strict.HashMap.HashMap k a) instance GHC.Base.Functor (Data.Strict.HashMap.HashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Read.Read k, GHC.Read.Read a) => GHC.Read.Read (Data.Strict.HashMap.HashMap k a) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Read.Read k) => Data.Functor.Classes.Read1 (Data.Strict.HashMap.HashMap k) instance Data.Traversable.Traversable (Data.Strict.HashMap.HashMap k) instance (Type.Strict.StrictType seen k, Type.Strict.StrictType seen v) => Type.Strict.StrictType seen (Data.Strict.HashMap.HashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => GHC.Exts.IsList (Data.Strict.HashMap.HashMap k v) module Data.Strict.Forced -- | A newtype to enforce rigid normal form evaluation. data Forced a map :: (NFData a) => (b -> a) -> Forced b -> Forced a traverse :: (NFData a, Applicative f) => (b -> f a) -> Forced b -> f (Forced a) () :: NFData a => Forced (t -> a) -> Forced t -> Forced a instance Data.Foldable.Foldable Data.Strict.Forced.Forced instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (Data.Strict.Forced.Forced a) instance GHC.Show.Show a => GHC.Show.Show (Data.Strict.Forced.Forced a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Strict.Forced.Forced a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Strict.Forced.Forced a) instance Type.Strict.StrictType seen (Data.Strict.Forced.Forced a) instance Control.DeepSeq.NFData (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Read.Read a) => GHC.Read.Read (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Base.Monoid a) => GHC.Base.Monoid (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Enum.Bounded a) => GHC.Enum.Bounded (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Enum.Enum a) => GHC.Enum.Enum (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Exts.IsList a) => GHC.Exts.IsList (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Num.Num a) => GHC.Num.Num (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Real.Integral a) => GHC.Real.Integral (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Real.Fractional a) => GHC.Real.Fractional (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Float.Floating a) => GHC.Float.Floating (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Float.RealFloat a) => GHC.Float.RealFloat (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Real.RealFrac a) => GHC.Real.RealFrac (Data.Strict.Forced.Forced a) instance (Control.DeepSeq.NFData a, GHC.Real.Real a) => GHC.Real.Real (Data.Strict.Forced.Forced a)