Safe Haskell | None |
---|---|
Language | GHC2021 |
Development.IDE.Graph.Classes
Documentation
Conversion of values to readable String
s.
Derived instances of Show
have the following properties, which
are compatible with derived instances of Read
:
- The result of
show
is a syntactically correct Haskell expression containing only constants, given the fixity declarations in force at the point where the type is declared. It contains only the constructor names defined in the data type, parentheses, and spaces. When labelled constructor fields are used, braces, commas, field names, and equal signs are also used. - If the constructor is defined to be an infix operator, then
showsPrec
will produce infix applications of the constructor. - the representation will be enclosed in parentheses if the
precedence of the top-level constructor in
x
is less thand
(associativity is ignored). Thus, ifd
is0
then the result is never surrounded in parentheses; ifd
is11
it is always surrounded in parentheses, unless it is an atomic expression. - If the constructor is defined using record syntax, then
show
will produce the record-syntax form, with the fields given in the same order as the original declaration.
For example, given the declarations
infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a
the derived instance of Show
is equivalent to
instance (Show a) => Show (Tree a) where showsPrec d (Leaf m) = showParen (d > app_prec) $ showString "Leaf " . showsPrec (app_prec+1) m where app_prec = 10 showsPrec d (u :^: v) = showParen (d > up_prec) $ showsPrec (up_prec+1) u . showString " :^: " . showsPrec (up_prec+1) v where up_prec = 5
Note that right-associativity of :^:
is ignored. For example,
produces the stringshow
(Leaf 1 :^: Leaf 2 :^: Leaf 3)"Leaf 1 :^: (Leaf 2 :^: Leaf 3)"
.
Methods
Arguments
:: Int | the operator precedence of the enclosing
context (a number from |
-> a | the value to be converted to a |
-> ShowS |
Convert a value to a readable String
.
showsPrec
should satisfy the law
showsPrec d x r ++ s == showsPrec d x (r ++ s)
Derived instances of Read
and Show
satisfy the following:
That is, readsPrec
parses the string produced by
showsPrec
, and delivers the value that showsPrec
started with.
Instances
The class Typeable
allows a concrete representation of a type to
be calculated.
Minimal complete definition
typeRep#
The Eq
class defines equality (==
) and inequality (/=
).
All the basic datatypes exported by the Prelude are instances of Eq
,
and Eq
may be derived for any datatype whose constituents are also
instances of Eq
.
The Haskell Report defines no laws for Eq
. However, instances are
encouraged to follow these properties:
Instances
Eq Lit | |
Eq Number | |
Eq Key | |
Eq Arity | |
Eq FunArg | |
Eq StarKindStatus | |
Eq DotNetTime | |
Defined in Data.Aeson.Types.Internal | |
Eq JSONPathElement | |
Defined in Data.Aeson.Types.Internal Methods (==) :: JSONPathElement -> JSONPathElement -> Bool # (/=) :: JSONPathElement -> JSONPathElement -> Bool # | |
Eq SumEncoding | |
Defined in Data.Aeson.Types.Internal | |
Eq Value | |
Eq AsyncCancelled | |
Defined in Control.Concurrent.Async.Internal Methods (==) :: AsyncCancelled -> AsyncCancelled -> Bool # (/=) :: AsyncCancelled -> AsyncCancelled -> Bool # | |
Eq ByteArray | Since: base-4.17.0.0 |
Eq Timeout | |
Eq ByteString | |
Defined in Data.ByteString.Internal.Type | |
Eq ByteString | |
Defined in Data.ByteString.Lazy.Internal | |
Eq ShortByteString | |
Defined in Data.ByteString.Short.Internal Methods (==) :: ShortByteString -> ShortByteString -> Bool # (/=) :: ShortByteString -> ShortByteString -> Bool # | |
Eq Clock | |
Eq TimeSpec | |
Eq IntSet | |
Eq Timeout | |
Eq BigNat | |
Eq ForeignSrcLang | |
Defined in GHC.ForeignSrcLang.Type Methods (==) :: ForeignSrcLang -> ForeignSrcLang -> Bool # (/=) :: ForeignSrcLang -> ForeignSrcLang -> Bool # | |
Eq Extension | |
Eq Void | @since base-4.8.0.0 |
Eq BlockReason | @since base-4.3.0.0 |
Defined in GHC.Internal.Conc.Sync | |
Eq ThreadId | @since base-4.2.0.0 |
Eq ThreadStatus | @since base-4.3.0.0 |
Defined in GHC.Internal.Conc.Sync | |
Eq All | @since base-2.01 |
Eq Any | @since base-2.01 |
Eq SomeTypeRep | |
Defined in GHC.Internal.Data.Typeable.Internal | |
Eq Version | @since base-2.01 |
Eq ErrorCall | @since base-4.7.0.0 |
Eq ArithException | @since base-3.0 |
Defined in GHC.Internal.Exception.Type Methods (==) :: ArithException -> ArithException -> Bool # (/=) :: ArithException -> ArithException -> Bool # | |
Eq Associativity | @since base-4.6.0.0 |
Defined in GHC.Internal.Generics Methods (==) :: Associativity -> Associativity -> Bool # (/=) :: Associativity -> Associativity -> Bool # | |
Eq DecidedStrictness | @since base-4.9.0.0 |
Defined in GHC.Internal.Generics Methods (==) :: DecidedStrictness -> DecidedStrictness -> Bool # (/=) :: DecidedStrictness -> DecidedStrictness -> Bool # | |
Eq Fixity | @since base-4.6.0.0 |
Eq SourceStrictness | @since base-4.9.0.0 |
Defined in GHC.Internal.Generics Methods (==) :: SourceStrictness -> SourceStrictness -> Bool # (/=) :: SourceStrictness -> SourceStrictness -> Bool # | |
Eq SourceUnpackedness | @since base-4.9.0.0 |
Defined in GHC.Internal.Generics Methods (==) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (/=) :: SourceUnpackedness -> SourceUnpackedness -> Bool # | |
Eq MaskingState | @since base-4.3.0.0 |
Defined in GHC.Internal.IO | |
Eq ArrayException | @since base-4.2.0.0 |
Defined in GHC.Internal.IO.Exception Methods (==) :: ArrayException -> ArrayException -> Bool # (/=) :: ArrayException -> ArrayException -> Bool # | |
Eq AsyncException | @since base-4.2.0.0 |
Defined in GHC.Internal.IO.Exception Methods (==) :: AsyncException -> AsyncException -> Bool # (/=) :: AsyncException -> AsyncException -> Bool # | |
Eq ExitCode | |
Eq IOErrorType | @since base-4.1.0.0 |
Defined in GHC.Internal.IO.Exception | |
Eq IOException | @since base-4.1.0.0 |
Defined in GHC.Internal.IO.Exception | |
Eq Int16 | @since base-2.01 |
Eq Int32 | @since base-2.01 |
Eq Int64 | @since base-2.01 |
Eq Int8 | @since base-2.01 |
Eq IoSubSystem | |
Defined in GHC.Internal.RTS.Flags | |
Eq SrcLoc | @since base-4.9.0.0 |
Eq SomeChar | |
Eq SomeSymbol | @since base-4.7.0.0 |
Defined in GHC.Internal.TypeLits | |
Eq SomeNat | @since base-4.7.0.0 |
Eq GeneralCategory | @since base-2.01 |
Defined in GHC.Internal.Unicode Methods (==) :: GeneralCategory -> GeneralCategory -> Bool # (/=) :: GeneralCategory -> GeneralCategory -> Bool # | |
Eq Word16 | @since base-2.01 |
Eq Word32 | @since base-2.01 |
Eq Word64 | @since base-2.01 |
Eq Word8 | @since base-2.01 |
Eq Module | |
Eq Ordering | |
Eq TrName | |
Eq TyCon | |
Eq Key # | |
Eq KeySet # | |
Eq KeyValue # | |
Eq ResultDeps # | |
Defined in Development.IDE.Graph.Internal.Types | |
Eq RunChanged # | |
Defined in Development.IDE.Graph.Internal.Types | |
Eq RunMode # | |
Eq Step # | |
Eq Flot | |
Eq URI | |
Eq URIAuth | |
Eq OsChar | Byte equality of the internal representation. |
Eq OsString | Byte equality of the internal representation. |
Eq PosixChar | |
Eq PosixString | |
Defined in System.OsString.Internal.Types | |
Eq WindowsChar | |
Defined in System.OsString.Internal.Types | |
Eq WindowsString | |
Defined in System.OsString.Internal.Types Methods (==) :: WindowsString -> WindowsString -> Bool # (/=) :: WindowsString -> WindowsString -> Bool # | |
Eq Mode | |
Eq Style | |
Eq TextDetails | |
Defined in Text.PrettyPrint.Annotated.HughesPJ | |
Eq Doc | |
Eq StdGen | |
Eq Scientific | Scientific numbers can be safely compared for equality. No magnitude |
Defined in Data.Scientific | |
Eq TSem | |
Eq AnnLookup | |
Eq AnnTarget | |
Eq Bang | |
Eq BndrVis | |
Eq Body | |
Eq Bytes | |
Eq Callconv | |
Eq Clause | |
Eq Con | |
Eq Dec | |
Eq DecidedStrictness | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: DecidedStrictness -> DecidedStrictness -> Bool # (/=) :: DecidedStrictness -> DecidedStrictness -> Bool # | |
Eq DerivClause | |
Defined in Language.Haskell.TH.Syntax | |
Eq DerivStrategy | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: DerivStrategy -> DerivStrategy -> Bool # (/=) :: DerivStrategy -> DerivStrategy -> Bool # | |
Eq DocLoc | |
Eq Exp | |
Eq FamilyResultSig | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: FamilyResultSig -> FamilyResultSig -> Bool # (/=) :: FamilyResultSig -> FamilyResultSig -> Bool # | |
Eq Fixity | |
Eq FixityDirection | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: FixityDirection -> FixityDirection -> Bool # (/=) :: FixityDirection -> FixityDirection -> Bool # | |
Eq Foreign | |
Eq FunDep | |
Eq Guard | |
Eq Info | |
Eq InjectivityAnn | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: InjectivityAnn -> InjectivityAnn -> Bool # (/=) :: InjectivityAnn -> InjectivityAnn -> Bool # | |
Eq Inline | |
Eq Lit | |
Eq Loc | |
Eq Match | |
Eq ModName | |
Eq Module | |
Eq ModuleInfo | |
Defined in Language.Haskell.TH.Syntax | |
Eq Name | |
Eq NameFlavour | |
Defined in Language.Haskell.TH.Syntax | |
Eq NameSpace | |
Eq NamespaceSpecifier | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool # (/=) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool # | |
Eq OccName | |
Eq Overlap | |
Eq Pat | |
Eq PatSynArgs | |
Defined in Language.Haskell.TH.Syntax | |
Eq PatSynDir | |
Eq Phases | |
Eq PkgName | |
Eq Pragma | |
Eq Range | |
Eq Role | |
Eq RuleBndr | |
Eq RuleMatch | |
Eq Safety | |
Eq SourceStrictness | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: SourceStrictness -> SourceStrictness -> Bool # (/=) :: SourceStrictness -> SourceStrictness -> Bool # | |
Eq SourceUnpackedness | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (/=) :: SourceUnpackedness -> SourceUnpackedness -> Bool # | |
Eq Specificity | |
Defined in Language.Haskell.TH.Syntax | |
Eq Stmt | |
Eq TyLit | |
Eq TySynEqn | |
Eq Type | |
Eq TypeFamilyHead | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: TypeFamilyHead -> TypeFamilyHead -> Bool # (/=) :: TypeFamilyHead -> TypeFamilyHead -> Bool # | |
Eq UnicodeException | |
Defined in Data.Text.Encoding.Error Methods (==) :: UnicodeException -> UnicodeException -> Bool # (/=) :: UnicodeException -> UnicodeException -> Bool # | |
Eq I8 | |
Eq Builder | |
Eq PartialUtf8CodePoint | |
Eq Utf8State | |
Eq DecoderState | |
Defined in Data.Text.Internal.Encoding.Utf8 | |
Eq Size | |
Eq B | |
Eq ShortText | |
Eq Month | |
Eq Quarter | |
Eq QuarterOfYear | |
Defined in Data.Time.Calendar.Quarter Methods (==) :: QuarterOfYear -> QuarterOfYear -> Bool # (/=) :: QuarterOfYear -> QuarterOfYear -> Bool # | |
Eq FirstWeekType | |
Defined in Data.Time.Calendar.WeekDate Methods (==) :: FirstWeekType -> FirstWeekType -> Bool # (/=) :: FirstWeekType -> FirstWeekType -> Bool # | |
Eq UTCTime | |
Eq LocalTime | |
Eq StringException | Since: unliftio-0.2.19 |
Defined in UnliftIO.Exception Methods (==) :: StringException -> StringException -> Bool # (/=) :: StringException -> StringException -> Bool # | |
Eq ConcException | |
Defined in UnliftIO.Internals.Async Methods (==) :: ConcException -> ConcException -> Bool # (/=) :: ConcException -> ConcException -> Bool # | |
Eq SubHashPath | |
Defined in Data.HashMap.Internal.Debug | |
Eq UUID | |
Eq UnpackedUUID | |
Eq Size | |
Eq Integer | |
Eq Natural | |
Eq () | |
Eq Bool | |
Eq Char | |
Eq Double | Note that due to the presence of
Also note that
|
Eq Float | Note that due to the presence of
Also note that
|
Eq Int | |
Eq Word | |
Eq (Encoding' a) | |
Eq v => Eq (KeyMap v) | |
Eq a => Eq (IResult a) | |
Eq a => Eq (Result a) | |
Eq (Async a) | |
Eq (Chan a) | Since: base-4.4.0.0 |
Eq (MutableByteArray s) | Since: base-4.17.0.0 |
Defined in Data.Array.Byte Methods (==) :: MutableByteArray s -> MutableByteArray s -> Bool # (/=) :: MutableByteArray s -> MutableByteArray s -> Bool # | |
Eq a => Eq (Complex a) | Since: base-2.1 |
Eq a => Eq (First a) | Since: base-4.9.0.0 |
Eq a => Eq (Last a) | Since: base-4.9.0.0 |
Eq a => Eq (Max a) | Since: base-4.9.0.0 |
Eq a => Eq (Min a) | Since: base-4.9.0.0 |
Eq m => Eq (WrappedMonoid m) | Since: base-4.9.0.0 |
Defined in Data.Semigroup Methods (==) :: WrappedMonoid m -> WrappedMonoid m -> Bool # (/=) :: WrappedMonoid m -> WrappedMonoid m -> Bool # | |
Eq vertex => Eq (SCC vertex) | Since: containers-0.5.9 |
Eq a => Eq (IntMap a) | |
Eq a => Eq (Seq a) | |
Eq a => Eq (ViewL a) | |
Eq a => Eq (ViewR a) | |
Eq a => Eq (Intersection a) | |
Defined in Data.Set.Internal Methods (==) :: Intersection a -> Intersection a -> Bool # (/=) :: Intersection a -> Intersection a -> Bool # | |
Eq a => Eq (Set a) | |
Eq a => Eq (Tree a) | |
Eq1 f => Eq (Fix f) | |
(Functor f, Eq1 f) => Eq (Mu f) | |
(Functor f, Eq1 f) => Eq (Nu f) | |
Eq a => Eq (DNonEmpty a) | |
Eq a => Eq (DList a) | |
Eq a => Eq (Change a) | |
Eq a => Eq (NonEmpty a) | @since base-4.9.0.0 |
Eq (TVar a) | @since base-4.8.0.0 |
Eq a => Eq (Identity a) | @since base-4.8.0.0 |
Eq a => Eq (First a) | @since base-2.01 |
Eq a => Eq (Last a) | @since base-2.01 |
Eq a => Eq (Dual a) | @since base-2.01 |
Eq a => Eq (Product a) | @since base-2.01 |
Eq a => Eq (Sum a) | @since base-2.01 |
Eq (ForeignPtr a) | @since base-2.01 |
Defined in GHC.Internal.ForeignPtr | |
Eq a => Eq (ZipList a) | @since base-4.7.0.0 |
Eq p => Eq (Par1 p) | @since base-4.7.0.0 |
Eq (IORef a) | Pointer equality. @since base-4.0.0.0 |
Eq a => Eq (Ratio a) | @since base-2.01 |
Eq (SChar c) | @since base-4.19.0.0 |
Eq (SSymbol s) | @since base-4.19.0.0 |
Eq (SNat n) | @since base-4.19.0.0 |
Eq a => Eq (Hashed a) | Uses precomputed hash to detect inequality faster |
Eq a => Eq (KeyMap a) # | |
Eq a => Eq (AnnotDetails a) | |
Defined in Text.PrettyPrint.Annotated.HughesPJ Methods (==) :: AnnotDetails a -> AnnotDetails a -> Bool # (/=) :: AnnotDetails a -> AnnotDetails a -> Bool # | |
Eq (Doc a) | |
Eq a => Eq (Span a) | |
Eq a => Eq (Array a) | |
(Eq a, Prim a) => Eq (PrimArray a) | Since: primitive-0.6.4.0 |
Eq a => Eq (SmallArray a) | |
Defined in Data.Primitive.SmallArray | |
Eq (Seed g) | |
Eq g => Eq (StateGen g) | |
Eq g => Eq (AtomicGen g) | |
Eq g => Eq (IOGen g) | |
Eq g => Eq (STGen g) | |
Eq g => Eq (TGen g) | |
Eq (TBQueue a) | |
Eq (TChan a) | |
Eq (TMVar a) | |
Eq (TQueue a) | |
Eq a => Eq (Maybe a) | |
Eq flag => Eq (TyVarBndr flag) | |
Eq a => Eq (Stream a) | |
Eq k => Eq (Error k) | |
Eq k => Eq (Validity k) | |
Eq a => Eq (HashSet a) | Note that, in the presence of hash collisions, equal
In general, the lack of extensionality can be observed with any function that depends on the key ordering, such as folds and traversals. |
Eq a => Eq (Vector a) | |
(Prim a, Eq a) => Eq (Vector a) | |
(Storable a, Eq a) => Eq (Vector a) | |
Eq a => Eq (Vector a) | |
Eq a => Eq (Maybe a) | @since base-2.01 |
Eq a => Eq (Solo a) | |
Eq a => Eq [a] | |
(Eq k, Eq e) => Eq (TkArray k e) | |
(Eq k, Eq e) => Eq (TkRecord k e) | |
(Eq k, Eq e) => Eq (Tokens k e) | |
Eq (Fixed a) | Since: base-2.1 |
Eq a => Eq (Arg a b) | Since: base-4.9.0.0 |
(Eq k, Eq a) => Eq (Map k a) | |
(Eq a, Eq b) => Eq (Either a b) | @since base-2.01 |
Eq (Proxy s) | @since base-4.7.0.0 |
Eq (TypeRep a) | @since base-2.01 |
Eq (U1 p) | @since base-4.9.0.0 |
Eq (V1 p) | @since base-4.9.0.0 |
Eq (STRef s a) | Pointer equality. @since base-2.01 |
Eq (m (Maybe (a, ListT m a))) => Eq (ListT m a) | |
Eq (MutableArray s a) | |
Defined in Data.Primitive.Array Methods (==) :: MutableArray s a -> MutableArray s a -> Bool # (/=) :: MutableArray s a -> MutableArray s a -> Bool # | |
Eq (MutablePrimArray s a) | |
Defined in Data.Primitive.PrimArray Methods (==) :: MutablePrimArray s a -> MutablePrimArray s a -> Bool # (/=) :: MutablePrimArray s a -> MutablePrimArray s a -> Bool # | |
Eq (SmallMutableArray s a) | |
Defined in Data.Primitive.SmallArray Methods (==) :: SmallMutableArray s a -> SmallMutableArray s a -> Bool # (/=) :: SmallMutableArray s a -> SmallMutableArray s a -> Bool # | |
(Eq a, PrimUnlifted a, unlifted_a ~ Unlifted a) => Eq (UnliftedArray_ unlifted_a a) | |
Defined in Data.Primitive.Unlifted.Array.ST Methods (==) :: UnliftedArray_ unlifted_a a -> UnliftedArray_ unlifted_a a -> Bool # (/=) :: UnliftedArray_ unlifted_a a -> UnliftedArray_ unlifted_a a -> Bool # | |
(Eq i, Eq e) => Eq (TArray i e) | |
(Eq a, Eq b) => Eq (Product2 a b) | |
(Eq a, Eq b) => Eq (Either a b) | |
(Eq a, Eq b) => Eq (These a b) | |
(Eq a, Eq b) => Eq (Pair a b) | |
(Eq a, Eq b) => Eq (These a b) | |
(Eq1 f, Eq a) => Eq (Lift f a) | |
(Eq1 m, Eq a) => Eq (MaybeT m a) | |
(Eq k, Eq v) => Eq (HashMap k v) | Note that, in the presence of hash collisions, equal
In general, the lack of extensionality can be observed with any function that depends on the key ordering, such as folds and traversals. |
(Eq k, Eq v) => Eq (Leaf k v) | |
(Eq a, Eq b) => Eq (a, b) | |
Eq (p a a) => Eq (Join p a) | |
Eq a => Eq (Const a b) | @since base-4.9.0.0 |
Eq (f a) => Eq (Ap f a) | @since base-4.12.0.0 |
Eq (f a) => Eq (Alt f a) | @since base-4.8.0.0 |
Eq (a :~: b) | @since base-4.7.0.0 |
Eq (OrderingI a b) | |
(Generic1 f, Eq (Rep1 f a)) => Eq (Generically1 f a) | @since base-4.18.0.0 |
Defined in GHC.Internal.Generics Methods (==) :: Generically1 f a -> Generically1 f a -> Bool # (/=) :: Generically1 f a -> Generically1 f a -> Bool # | |
Eq (f p) => Eq (Rec1 f p) | @since base-4.7.0.0 |
Eq (URec (Ptr ()) p) | @since base-4.9.0.0 |
Eq (URec Char p) | @since base-4.9.0.0 |
Eq (URec Double p) | @since base-4.9.0.0 |
Eq (URec Float p) | |
Eq (URec Int p) | @since base-4.9.0.0 |
Eq (URec Word p) | @since base-4.9.0.0 |
unlifted_a ~ Unlifted a => Eq (MutableUnliftedArray_ unlifted_a s a) | |
Defined in Data.Primitive.Unlifted.Array.ST Methods (==) :: MutableUnliftedArray_ unlifted_a s a -> MutableUnliftedArray_ unlifted_a s a -> Bool # (/=) :: MutableUnliftedArray_ unlifted_a s a -> MutableUnliftedArray_ unlifted_a s a -> Bool # | |
Eq b => Eq (Tagged s b) | |
(Eq (f a), Eq (g a), Eq a) => Eq (These1 f g a) | |
(Eq1 f, Eq a) => Eq (Backwards f a) | |
(Eq e, Eq1 m, Eq a) => Eq (ExceptT e m a) | |
(Eq1 f, Eq a) => Eq (IdentityT f a) | |
(Eq w, Eq1 m, Eq a) => Eq (WriterT w m a) | |
(Eq w, Eq1 m, Eq a) => Eq (WriterT w m a) | |
Eq a => Eq (Constant a b) | |
(Eq1 f, Eq a) => Eq (Reverse f a) | |
(Eq a, Eq b, Eq c) => Eq (a, b, c) | |
(Eq (f a), Eq (g a)) => Eq (Product f g a) | Since: base-4.18.0.0 |
(Eq (f a), Eq (g a)) => Eq (Sum f g a) | Since: base-4.18.0.0 |
Eq (a :~~: b) | @since base-4.10.0.0 |
(Eq (f p), Eq (g p)) => Eq ((f :*: g) p) | @since base-4.7.0.0 |
(Eq (f p), Eq (g p)) => Eq ((f :+: g) p) | @since base-4.7.0.0 |
Eq c => Eq (K1 i c p) | @since base-4.7.0.0 |
(Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d) | |
Eq (f (g a)) => Eq (Compose f g a) | Since: base-4.18.0.0 |
Eq (f a) => Eq (Clown f a b) | |
Eq (p b a) => Eq (Flip p a b) | |
Eq (g b) => Eq (Joker g a b) | |
Eq (p a b) => Eq (WrappedBifunctor p a b) | |
Defined in Data.Bifunctor.Wrapped Methods (==) :: WrappedBifunctor p a b -> WrappedBifunctor p a b -> Bool # (/=) :: WrappedBifunctor p a b -> WrappedBifunctor p a b -> Bool # | |
Eq (f (g p)) => Eq ((f :.: g) p) | @since base-4.7.0.0 |
Eq (f p) => Eq (M1 i c f p) | @since base-4.7.0.0 |
(Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e) | |
(Eq (f a b), Eq (g a b)) => Eq (Product f g a b) | |
(Eq (p a b), Eq (q a b)) => Eq (Sum p q a b) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f) | |
Eq (f (p a b)) => Eq (Tannen f p a b) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Eq (a, b, c, d, e, f, g, h) | |
Eq (p (f a) (g b)) => Eq (Biff p f g a b) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Eq (a, b, c, d, e, f, g, h, i) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) => Eq (a, b, c, d, e, f, g, h, i, j) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) => Eq (a, b, c, d, e, f, g, h, i, j, k) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) => Eq (a, b, c, d, e, f, g, h, i, j, k, l) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | |
class Eq a => Hashable a where #
The class of types that can be converted to a hash value.
Minimal implementation: hashWithSalt
.
Hashable
is intended exclusively for use in in-memory data structures.
.
Hashable
does not have a fixed standard.
This allows it to improve over time.
.
Because it does not have a fixed standard, different computers or computers on different versions of the code will observe different hash values.
As such, Hashable
is not recommended for use other than in-memory datastructures.
Specifically, Hashable
is not intended for network use or in applications which persist hashed values.
For stable hashing use named hashes: sha256, crc32, xxhash etc.
If you are looking for Hashable
instance in time
package,
check time-compat
Minimal complete definition
Nothing
Methods
hashWithSalt :: Int -> a -> Int infixl 0 #
Return a hash value for the argument, using the given salt.
The general contract of hashWithSalt
is:
- If two values are equal according to the
==
method, then applying thehashWithSalt
method on each of the two values must produce the same integer result if the same salt is used in each case. - It is not required that if two values are unequal
according to the
==
method, then applying thehashWithSalt
method on each of the two values must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal values may improve the performance of hashing-based data structures. - This method can be used to compute different hash values for
the same input by providing a different salt in each
application of the method. This implies that any instance
that defines
hashWithSalt
must make use of the salt in its implementation. hashWithSalt
may return negativeInt
values.
Like hashWithSalt
, but no salt is used. The default
implementation uses hashWithSalt
with some default salt.
Instances might want to implement this method to provide a more
efficient implementation than the default implementation.
Instances
A class of types that can be fully evaluated.
Since: deepseq-1.1.0.0
Minimal complete definition
Nothing
Methods
rnf
should reduce its argument to normal form (that is, fully
evaluate all sub-components), and then return ()
.
Generic
NFData
deriving
Starting with GHC 7.2, you can automatically derive instances
for types possessing a Generic
instance.
Note: Generic1
can be auto-derived starting with GHC 7.4
{-# LANGUAGE DeriveGeneric #-} import GHC.Generics (Generic, Generic1) import Control.DeepSeq data Foo a = Foo a String deriving (Eq, Generic, Generic1) instance NFData a => NFData (Foo a) instance NFData1 Foo data Colour = Red | Green | Blue deriving Generic instance NFData Colour
Starting with GHC 7.10, the example above can be written more
concisely by enabling the new DeriveAnyClass
extension:
{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-} import GHC.Generics (Generic) import Control.DeepSeq data Foo a = Foo a String deriving (Eq, Generic, Generic1, NFData, NFData1) data Colour = Red | Green | Blue deriving (Generic, NFData)
Compatibility with previous deepseq
versions
Prior to version 1.4.0.0, the default implementation of the rnf
method was defined as
rnf
a =seq
a ()
However, starting with deepseq-1.4.0.0
, the default
implementation is based on DefaultSignatures
allowing for
more accurate auto-derived NFData
instances. If you need the
previously used exact default rnf
method implementation
semantics, use
instance NFData Colour where rnf x = seq x ()
or alternatively
instance NFData Colour where rnf = rwhnf
or
{-# LANGUAGE BangPatterns #-} instance NFData Colour where rnf !_ = ()
Instances
NFData Key | |
Defined in Data.Aeson.Key | |
NFData JSONPathElement | |
Defined in Data.Aeson.Types.Internal Methods rnf :: JSONPathElement -> () # | |
NFData Value | |
Defined in Data.Aeson.Types.Internal | |
NFData ByteArray | Since: deepseq-1.4.7.0 |
Defined in Control.DeepSeq | |
NFData ByteString | |
Defined in Data.ByteString.Internal.Type Methods rnf :: ByteString -> () # | |
NFData ByteString | |
Defined in Data.ByteString.Lazy.Internal Methods rnf :: ByteString -> () # | |
NFData ShortByteString | |
Defined in Data.ByteString.Short.Internal Methods rnf :: ShortByteString -> () # | |
NFData IntSet | |
Defined in Data.IntSet.Internal | |
NFData Void | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData ThreadId | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData All | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData Any | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData TypeRep | NOTE: Prior to Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData Unique | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData Version | Since: deepseq-1.3.0.0 |
Defined in Control.DeepSeq | |
NFData Fingerprint | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq Methods rnf :: Fingerprint -> () # | |
NFData CBool | Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq | |
NFData CChar | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CClock | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CDouble | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CFile | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CFloat | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CFpos | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CInt | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CIntMax | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CIntPtr | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CJmpBuf | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CLLong | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CLong | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CPtrdiff | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CSChar | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CSUSeconds | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq Methods rnf :: CSUSeconds -> () # | |
NFData CShort | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CSigAtomic | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq Methods rnf :: CSigAtomic -> () # | |
NFData CSize | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CTime | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CUChar | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CUInt | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CUIntMax | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CUIntPtr | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CULLong | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CULong | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CUSeconds | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CUShort | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData CWchar | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData MaskingState | Since: deepseq-1.4.4.0 |
Defined in Control.DeepSeq Methods rnf :: MaskingState -> () # | |
NFData ExitCode | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData Int16 | |
Defined in Control.DeepSeq | |
NFData Int32 | |
Defined in Control.DeepSeq | |
NFData Int64 | |
Defined in Control.DeepSeq | |
NFData Int8 | |
Defined in Control.DeepSeq | |
NFData CallStack | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData SrcLoc | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData Word16 | |
Defined in Control.DeepSeq | |
NFData Word32 | |
Defined in Control.DeepSeq | |
NFData Word64 | |
Defined in Control.DeepSeq | |
NFData Word8 | |
Defined in Control.DeepSeq | |
NFData Module | Since: deepseq-1.4.8.0 |
Defined in Control.DeepSeq | |
NFData Ordering | |
Defined in Control.DeepSeq | |
NFData TyCon | NOTE: Prior to Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData KeySet # | |
Defined in Development.IDE.Graph.Internal.Key | |
NFData RunChanged # | |
Defined in Development.IDE.Graph.Internal.Types Methods rnf :: RunChanged -> () # | |
NFData RunMode # | |
Defined in Development.IDE.Graph.Internal.Types | |
NFData URI | |
Defined in Network.URI | |
NFData URIAuth | |
Defined in Network.URI | |
NFData OsChar | |
Defined in System.OsString.Internal.Types | |
NFData OsString | |
Defined in System.OsString.Internal.Types | |
NFData PosixChar | |
Defined in System.OsString.Internal.Types | |
NFData PosixString | |
Defined in System.OsString.Internal.Types Methods rnf :: PosixString -> () # | |
NFData WindowsChar | |
Defined in System.OsString.Internal.Types Methods rnf :: WindowsChar -> () # | |
NFData WindowsString | |
Defined in System.OsString.Internal.Types Methods rnf :: WindowsString -> () # | |
NFData TextDetails | |
Defined in Text.PrettyPrint.Annotated.HughesPJ Methods rnf :: TextDetails -> () # | |
NFData Doc | |
Defined in Text.PrettyPrint.HughesPJ | |
NFData StdGen | |
Defined in System.Random.Internal | |
NFData Scientific | |
Defined in Data.Scientific Methods rnf :: Scientific -> () # | |
NFData UnicodeException | |
Defined in Data.Text.Encoding.Error Methods rnf :: UnicodeException -> () # | |
NFData ShortText | |
Defined in Data.Text.Short.Internal | |
NFData Month | |
Defined in Data.Time.Calendar.Month | |
NFData Quarter | |
Defined in Data.Time.Calendar.Quarter | |
NFData QuarterOfYear | |
Defined in Data.Time.Calendar.Quarter Methods rnf :: QuarterOfYear -> () # | |
NFData UTCTime | |
Defined in Data.Time.Clock.Internal.UTCTime | |
NFData LocalTime | |
Defined in Data.Time.LocalTime.Internal.LocalTime | |
NFData ZonedTime | |
Defined in Data.Time.LocalTime.Internal.ZonedTime | |
NFData UUID | |
Defined in Data.UUID.Types.Internal | |
NFData Integer | |
Defined in Control.DeepSeq | |
NFData Natural | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData () | |
Defined in Control.DeepSeq | |
NFData Bool | |
Defined in Control.DeepSeq | |
NFData Char | |
Defined in Control.DeepSeq | |
NFData Double | |
Defined in Control.DeepSeq | |
NFData Float | |
Defined in Control.DeepSeq | |
NFData Int | |
Defined in Control.DeepSeq | |
NFData Word | |
Defined in Control.DeepSeq | |
NFData v => NFData (KeyMap v) | |
Defined in Data.Aeson.KeyMap | |
NFData a => NFData (IResult a) | |
Defined in Data.Aeson.Types.Internal | |
NFData a => NFData (Result a) | |
Defined in Data.Aeson.Types.Internal | |
NFData (MutableByteArray s) | Since: deepseq-1.4.8.0 |
Defined in Control.DeepSeq Methods rnf :: MutableByteArray s -> () # | |
NFData a => NFData (Complex a) | |
Defined in Control.DeepSeq | |
NFData a => NFData (First a) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Last a) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Max a) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Min a) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData m => NFData (WrappedMonoid m) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq Methods rnf :: WrappedMonoid m -> () # | |
NFData a => NFData (SCC a) | |
Defined in Data.Graph | |
NFData a => NFData (IntMap a) | |
Defined in Data.IntMap.Internal | |
NFData a => NFData (Digit a) | |
Defined in Data.Sequence.Internal | |
NFData a => NFData (Elem a) | |
Defined in Data.Sequence.Internal | |
NFData a => NFData (FingerTree a) | |
Defined in Data.Sequence.Internal Methods rnf :: FingerTree a -> () # | |
NFData a => NFData (Node a) | |
Defined in Data.Sequence.Internal | |
NFData a => NFData (Seq a) | |
Defined in Data.Sequence.Internal | |
NFData a => NFData (Set a) | |
Defined in Data.Set.Internal | |
NFData a => NFData (Tree a) | |
NFData1 f => NFData (Fix f) | |
NFData a => NFData (DNonEmpty a) | |
Defined in Data.DList.DNonEmpty.Internal | |
NFData a => NFData (DList a) | |
Defined in Data.DList.Internal | |
NFData a => NFData (NonEmpty a) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Identity a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (First a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Last a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Down a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Dual a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Product a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Sum a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (ZipList a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData (IORef a) | NOTE: Only strict in the reference and not the referenced value. Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData (MVar a) | NOTE: Only strict in the reference and not the referenced value. Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData (FunPtr a) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData (Ptr a) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Ratio a) | |
Defined in Control.DeepSeq | |
NFData (StableName a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq Methods rnf :: StableName a -> () # | |
NFData a => NFData (Hashed a) | |
Defined in Data.Hashable.Class | |
NFData a => NFData (AnnotDetails a) | |
Defined in Text.PrettyPrint.Annotated.HughesPJ Methods rnf :: AnnotDetails a -> () # | |
NFData a => NFData (Doc a) | |
Defined in Text.PrettyPrint.Annotated.HughesPJ | |
NFData a => NFData (Array a) | |
Defined in Data.Primitive.Array | |
NFData (PrimArray a) | |
Defined in Data.Primitive.PrimArray | |
NFData a => NFData (SmallArray a) | |
Defined in Data.Primitive.SmallArray Methods rnf :: SmallArray a -> () # | |
NFData g => NFData (StateGen g) | |
Defined in System.Random.Internal | |
NFData g => NFData (AtomicGen g) | |
Defined in System.Random.Stateful | |
NFData g => NFData (IOGen g) | |
Defined in System.Random.Stateful | |
NFData g => NFData (STGen g) | |
Defined in System.Random.Stateful | |
NFData g => NFData (TGen g) | |
Defined in System.Random.Stateful | |
NFData a => NFData (Maybe a) | |
Defined in Data.Strict.Maybe | |
NFData a => NFData (Array a) | |
Defined in Data.HashMap.Internal.Array | |
NFData a => NFData (HashSet a) | |
Defined in Data.HashSet.Internal | |
NFData a => NFData (Vector a) | |
Defined in Data.Vector | |
NFData (Vector a) | |
Defined in Data.Vector.Primitive | |
NFData (Vector a) | |
Defined in Data.Vector.Storable | |
NFData a => NFData (Vector a) | |
Defined in Data.Vector.Strict | |
NFData (Vector a) | |
Defined in Data.Vector.Unboxed.Base | |
NFData a => NFData (Maybe a) | |
Defined in Control.DeepSeq | |
NFData a => NFData (Solo a) | Since: deepseq-1.4.6.0 |
Defined in Control.DeepSeq | |
NFData a => NFData [a] | |
Defined in Control.DeepSeq | |
NFData (Fixed a) | Since: deepseq-1.3.0.0 |
Defined in Control.DeepSeq | |
(NFData a, NFData b) => NFData (Arg a b) | Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
(NFData k, NFData a) => NFData (Map k a) | |
Defined in Data.Map.Internal | |
(NFData a, NFData b) => NFData (Array a b) | |
Defined in Control.DeepSeq | |
(NFData a, NFData b) => NFData (Either a b) | |
Defined in Control.DeepSeq | |
NFData (Proxy a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData (TypeRep a) | Since: deepseq-1.4.8.0 |
Defined in Control.DeepSeq | |
NFData (STRef s a) | NOTE: Only strict in the reference and not the referenced value. Since: deepseq-1.4.2.0 |
Defined in Control.DeepSeq | |
NFData (MutablePrimArray s a) | |
Defined in Data.Primitive.PrimArray Methods rnf :: MutablePrimArray s a -> () # | |
(NFData a, NFData b) => NFData (Either a b) | |
Defined in Data.Strict.Either | |
(NFData a, NFData b) => NFData (These a b) | |
Defined in Data.Strict.These | |
(NFData a, NFData b) => NFData (Pair a b) | |
Defined in Data.Strict.Tuple | |
(NFData a, NFData b) => NFData (These a b) | Since: these-0.7.1 |
Defined in Data.These | |
(NFData k, NFData v) => NFData (HashMap k v) | |
Defined in Data.HashMap.Internal | |
(NFData k, NFData v) => NFData (Leaf k v) | |
Defined in Data.HashMap.Internal | |
NFData (MVector s a) | |
Defined in Data.Vector.Unboxed.Base | |
(NFData a, NFData b) => NFData (a, b) | |
Defined in Control.DeepSeq | |
NFData (a -> b) | This instance is for convenience and consistency with Since: deepseq-1.3.0.0 |
Defined in Control.DeepSeq | |
NFData a => NFData (Const a b) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
NFData (a :~: b) | Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq | |
NFData b => NFData (Tagged s b) | |
Defined in Data.Tagged | |
(NFData (f a), NFData (g a), NFData a) => NFData (These1 f g a) | Available always Since: these-1.2 |
Defined in Data.Functor.These | |
(NFData a1, NFData a2, NFData a3) => NFData (a1, a2, a3) | |
Defined in Control.DeepSeq | |
(NFData (f a), NFData (g a)) => NFData (Product f g a) | Note: in Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq | |
(NFData (f a), NFData (g a)) => NFData (Sum f g a) | Note: in Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq | |
NFData (a :~~: b) | Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq | |
(NFData a1, NFData a2, NFData a3, NFData a4) => NFData (a1, a2, a3, a4) | |
Defined in Control.DeepSeq | |
NFData (f (g a)) => NFData (Compose f g a) | Note: in Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => NFData (a1, a2, a3, a4, a5) | |
Defined in Control.DeepSeq | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => NFData (a1, a2, a3, a4, a5, a6) | |
Defined in Control.DeepSeq | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) => NFData (a1, a2, a3, a4, a5, a6, a7) | |
Defined in Control.DeepSeq | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8) => NFData (a1, a2, a3, a4, a5, a6, a7, a8) | |
Defined in Control.DeepSeq | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8, NFData a9) => NFData (a1, a2, a3, a4, a5, a6, a7, a8, a9) | |
Defined in Control.DeepSeq |