Safe Haskell | None |
---|---|
Language | Haskell2010 |
Type constraints and patterns for strict types.
- type family Strict (d :: *) :: Constraint where ...
- pattern IsStrict :: forall a. Strict a => a -> a
Documentation
type family Strict (d :: *) :: Constraint where ... Source #
A closed predicate that is satisfied only by strict types.
A type T is strict if
∀x :: T . rnf x = ⊥ <=> rwhnf x = ⊥
Requires undecidable instances. Mutually recursive groups of types not yet supported.
Strict Char = () | |
Strict Double = () | |
Strict Int = () | |
Strict Integer = () | |
Strict Word = () | |
Strict ByteString = () | |
Strict Text = () | |
Strict String = () | |
Strict (Hashed a) = Strict a | |
Strict (UArray ix v) = () | |
Strict (StorableArray ix v) = () | |
Strict (Map k v) = (Strict k, Strict v) | |
Strict (HashMap k v) = (Strict k, Strict v) | |
Strict (Set k) = Strict k | |
Strict (HashSet k) = Strict k | |
Strict (Vector a) = () | |
Strict (MVector s a) = () | |
Strict (Vector a) = () | |
Strict (MVector s a) = () | |
Strict (Vector a) = () | |
Strict (MVector s a) = () | |
Strict d = StrictRep d (Rep d) |