Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Development.Shake.Classes
Description
This module reexports the six necessary type classes that many rule types must support through ShakeValue
.
You can use this module to define new rules without depending on the binary
, deepseq
and hashable
packages.
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
Show NestedAtomically | Since: base-4.0 |
Defined in Control.Exception.Base | |
Show NoMatchingContinuationPrompt | Since: base-4.18 |
Defined in Control.Exception.Base | |
Show NoMethodError | Since: base-4.0 |
Defined in Control.Exception.Base | |
Show NonTermination | Since: base-4.0 |
Defined in Control.Exception.Base | |
Show PatternMatchFail | Since: base-4.0 |
Defined in Control.Exception.Base | |
Show RecConError | Since: base-4.0 |
Defined in Control.Exception.Base | |
Show RecSelError | Since: base-4.0 |
Defined in Control.Exception.Base | |
Show RecUpdError | Since: base-4.0 |
Defined in Control.Exception.Base | |
Show TypeError | Since: base-4.9.0.0 |
Show ByteArray | Since: base-4.17.0.0 |
Show Constr | Since: base-4.0.0.0 |
Show ConstrRep | Since: base-4.0.0.0 |
Show DataRep | Since: base-4.0.0.0 |
Show DataType | Since: base-4.0.0.0 |
Show Fixity | Since: base-4.0.0.0 |
Show Dynamic | Since: base-2.1 |
Show All | Since: base-2.1 |
Show Any | Since: base-2.1 |
Show SomeTypeRep | Since: base-4.10.0.0 |
Defined in Data.Typeable.Internal | |
Show Version | Since: base-2.1 |
Show CBool | |
Show CChar | |
Show CClock | |
Show CDouble | |
Show CFloat | |
Show CInt | |
Show CIntMax | |
Show CIntPtr | |
Show CLLong | |
Show CLong | |
Show CPtrdiff | |
Show CSChar | |
Show CSUSeconds | |
Defined in Foreign.C.Types | |
Show CShort | |
Show CSigAtomic | |
Defined in Foreign.C.Types | |
Show CSize | |
Show CTime | |
Show CUChar | |
Show CUInt | |
Show CUIntMax | |
Show CUIntPtr | |
Show CULLong | |
Show CULong | |
Show CUSeconds | |
Show CUShort | |
Show CWchar | |
Show IntPtr | |
Show WordPtr | |
Show Void | Since: base-4.8.0.0 |
Show BlockReason | Since: base-4.3.0.0 |
Defined in GHC.Conc.Sync | |
Show ThreadId | Since: base-4.2.0.0 |
Show ThreadStatus | Since: base-4.3.0.0 |
Defined in GHC.Conc.Sync | |
Show ErrorCall | Since: base-4.0.0.0 |
Show ArithException | Since: base-4.0.0.0 |
Defined in GHC.Exception.Type | |
Show SomeException | Since: base-3.0 |
Defined in GHC.Exception.Type | |
Show Associativity | Since: base-4.6.0.0 |
Defined in GHC.Generics | |
Show DecidedStrictness | Since: base-4.9.0.0 |
Defined in GHC.Generics | |
Show Fixity | Since: base-4.6.0.0 |
Show SourceStrictness | Since: base-4.9.0.0 |
Defined in GHC.Generics | |
Show SourceUnpackedness | Since: base-4.9.0.0 |
Defined in GHC.Generics | |
Show MaskingState | Since: base-4.3.0.0 |
Show SeekMode | Since: base-4.2.0.0 |
Show CodingProgress | Since: base-4.4.0.0 |
Defined in GHC.IO.Encoding.Types | |
Show TextEncoding | Since: base-4.3.0.0 |
Defined in GHC.IO.Encoding.Types | |
Show AllocationLimitExceeded | Since: base-4.7.1.0 |
Defined in GHC.IO.Exception | |
Show ArrayException | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception | |
Show AssertionFailed | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception | |
Show AsyncException | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception | |
Show BlockedIndefinitelyOnMVar | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception | |
Show BlockedIndefinitelyOnSTM | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception | |
Show CompactionFailed | Since: base-4.10.0.0 |
Defined in GHC.IO.Exception | |
Show Deadlock | Since: base-4.1.0.0 |
Show ExitCode | |
Show FixIOException | Since: base-4.11.0.0 |
Defined in GHC.IO.Exception | |
Show IOErrorType | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception | |
Show IOException | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception | |
Show SomeAsyncException | Since: base-4.7.0.0 |
Defined in GHC.IO.Exception | |
Show HandlePosn | Since: base-4.1.0.0 |
Defined in GHC.IO.Handle | |
Show BufferMode | Since: base-4.2.0.0 |
Defined in GHC.IO.Handle.Types | |
Show Handle | Since: base-4.1.0.0 |
Show HandleType | Since: base-4.1.0.0 |
Defined in GHC.IO.Handle.Types | |
Show Newline | Since: base-4.3.0.0 |
Show NewlineMode | Since: base-4.3.0.0 |
Defined in GHC.IO.Handle.Types | |
Show IOMode | Since: base-4.2.0.0 |
Show Int16 | Since: base-2.1 |
Show Int32 | Since: base-2.1 |
Show Int64 | Since: base-2.1 |
Show Int8 | Since: base-2.1 |
Show FractionalExponentBase | |
Show CallStack | Since: base-4.9.0.0 |
Show SrcLoc | Since: base-4.9.0.0 |
Show GeneralCategory | Since: base-2.1 |
Defined in GHC.Unicode | |
Show Word16 | Since: base-2.1 |
Show Word32 | Since: base-2.1 |
Show Word64 | Since: base-2.1 |
Show Word8 | Since: base-2.1 |
Show CBlkCnt | |
Show CBlkSize | |
Show CCc | |
Show CClockId | |
Show CDev | |
Show CFsBlkCnt | |
Show CFsFilCnt | |
Show CGid | |
Show CId | |
Show CIno | |
Show CKey | |
Show CMode | |
Show CNfds | |
Show CNlink | |
Show COff | |
Show CPid | |
Show CRLim | |
Show CSocklen | |
Show CSpeed | |
Show CSsize | |
Show CTcflag | |
Show CTimer | |
Show CUid | |
Show Fd | |
Show Lexeme | Since: base-2.1 |
Show Number | Since: base-4.6.0.0 |
Show ByteString | |
Defined in Data.ByteString.Internal.Type | |
Show ByteString | |
Defined in Data.ByteString.Lazy.Internal | |
Show ShortByteString | |
Defined in Data.ByteString.Short.Internal | |
Show Clock | |
Show TimeSpec | |
Show IntSet | |
Show FileType | |
Show Permissions | |
Defined in System.Directory.Internal.Common | |
Show XdgDirectory | |
Defined in System.Directory.Internal.Common | |
Show XdgDirectoryList | |
Defined in System.Directory.Internal.Common | |
Show Timeout | |
Show OsChar | |
Show OsString | On windows, decodes as UCS-2. On unix prints the raw bytes without decoding. |
Show PosixChar | |
Show PosixString | Prints the raw bytes without decoding. |
Defined in System.OsString.Internal.Types.Hidden | |
Show WindowsChar | |
Defined in System.OsString.Internal.Types.Hidden | |
Show WindowsString | Decodes as UCS-2. |
Defined in System.OsString.Internal.Types.Hidden | |
Show Path | |
Show Pattern | |
Show Pat | |
Show StepNext | |
Show ForeignSrcLang | |
Defined in GHC.ForeignSrcLang.Type | |
Show Extension | |
Show KindRep | |
Show Module | Since: base-4.9.0.0 |
Show Ordering | Since: base-2.1 |
Show TrName | Since: base-4.9.0.0 |
Show TyCon | Since: base-2.1 |
Show TypeLitSort | Since: base-4.11.0.0 |
Show Flot | |
Show OsChar | |
Show OsString | |
Show PosixChar | |
Show PosixString | |
Show WindowsChar | |
Show WindowsString | |
Show Mode | |
Show Style | |
Show TextDetails | |
Defined in Text.PrettyPrint.Annotated.HughesPJ | |
Show Doc | |
Show CmdSpec | |
Show CreateProcess | |
Defined in System.Process.Common | |
Show StdStream | |
Show Cardinality | |
Show StdGen | |
Show CmdArgument Source # | |
Defined in Development.Shake.Command | |
Show CmdOption Source # | |
Show RunChanged Source # | |
Defined in Development.Shake.Internal.Core.Types | |
Show RunMode Source # | |
Show ShakeException Source # | |
Defined in Development.Shake.Internal.Errors | |
Show Change Source # | |
Show Lint Source # | |
Show Progress Source # | |
Show Rebuild Source # | |
Show ShakeOptions Source # | |
Defined in Development.Shake.Internal.Options | |
Show Verbosity Source # | |
Show Resource Source # | |
Show AnnLookup | |
Show AnnTarget | |
Show Bang | |
Show Body | |
Show Bytes | |
Show Callconv | |
Show Clause | |
Show Con | |
Show Dec | |
Show DecidedStrictness | |
Defined in Language.Haskell.TH.Syntax | |
Show DerivClause | |
Defined in Language.Haskell.TH.Syntax | |
Show DerivStrategy | |
Defined in Language.Haskell.TH.Syntax | |
Show DocLoc | |
Show Exp | |
Show FamilyResultSig | |
Defined in Language.Haskell.TH.Syntax | |
Show Fixity | |
Show FixityDirection | |
Defined in Language.Haskell.TH.Syntax | |
Show Foreign | |
Show FunDep | |
Show Guard | |
Show Info | |
Show InjectivityAnn | |
Defined in Language.Haskell.TH.Syntax | |
Show Inline | |
Show Lit | |
Show Loc | |
Show Match | |
Show ModName | |
Show Module | |
Show ModuleInfo | |
Defined in Language.Haskell.TH.Syntax | |
Show Name | |
Show NameFlavour | |
Defined in Language.Haskell.TH.Syntax | |
Show NameSpace | |
Show OccName | |
Show Overlap | |
Show Pat | |
Show PatSynArgs | |
Defined in Language.Haskell.TH.Syntax | |
Show PatSynDir | |
Show Phases | |
Show PkgName | |
Show Pragma | |
Show Range | |
Show Role | |
Show RuleBndr | |
Show RuleMatch | |
Show Safety | |
Show SourceStrictness | |
Defined in Language.Haskell.TH.Syntax | |
Show SourceUnpackedness | |
Defined in Language.Haskell.TH.Syntax | |
Show Specificity | |
Defined in Language.Haskell.TH.Syntax | |
Show Stmt | |
Show TyLit | |
Show TySynEqn | |
Show Type | |
Show TypeFamilyHead | |
Defined in Language.Haskell.TH.Syntax | |
Show CalendarDiffDays | |
Defined in Data.Time.Calendar.CalendarDiffDays | |
Show DayOfWeek | |
Show DiffTime | |
Show NominalDiffTime | |
Defined in Data.Time.Clock.Internal.NominalDiffTime | |
Show TimeLocale | |
Defined in Data.Time.Format.Locale | |
Show CalendarDiffTime | |
Show LocalTime | |
Show TimeOfDay | |
Show TimeZone | This only shows the time zone name, or offset if the name is empty. |
Show ZonedTime | For the time zone, this only shows the name, or offset if the name is empty. |
Show CAttributes | |
Defined in System.Posix.Files.Common | |
Show StatxFlags | |
Defined in System.Posix.Files.Common | |
Show StatxMask | |
Show OpenFileFlags | |
Defined in System.Posix.IO.Common | |
Show OpenMode | |
Show Integer | Since: base-2.1 |
Show Natural | Since: base-4.8.0.0 |
Show () | Since: base-2.1 |
Show Bool | Since: base-2.1 |
Show Char | Since: base-2.1 |
Show Int | Since: base-2.1 |
Show Levity | Since: base-4.15.0.0 |
Show RuntimeRep | Since: base-4.11.0.0 |
Show VecCount | Since: base-4.11.0.0 |
Show VecElem | Since: base-4.11.0.0 |
Show Word | Since: base-2.1 |
Show a => Show (ZipList a) | Since: base-4.7.0.0 |
Show a => Show (And a) | Since: base-4.16 |
Show a => Show (Iff a) | Since: base-4.16 |
Show a => Show (Ior a) | Since: base-4.16 |
Show a => Show (Xor a) | Since: base-4.16 |
Show a => Show (Complex a) | Since: base-2.1 |
Show a => Show (First a) | Since: base-2.1 |
Show a => Show (Last a) | Since: base-2.1 |
Show a => Show (Down a) | This instance would be equivalent to the derived instances of the
Since: base-4.7.0.0 |
Show a => Show (First a) | Since: base-4.9.0.0 |
Show a => Show (Last a) | Since: base-4.9.0.0 |
Show a => Show (Max a) | Since: base-4.9.0.0 |
Show a => Show (Min a) | Since: base-4.9.0.0 |
Show m => Show (WrappedMonoid m) | Since: base-4.9.0.0 |
Defined in Data.Semigroup | |
Show a => Show (Dual a) | Since: base-2.1 |
Show a => Show (Product a) | Since: base-2.1 |
Show a => Show (Sum a) | Since: base-2.1 |
Show a => Show (NonEmpty a) | Since: base-4.11.0.0 |
Show (ForeignPtr a) | Since: base-2.1 |
Defined in GHC.ForeignPtr | |
Show p => Show (Par1 p) | Since: base-4.7.0.0 |
Show (FunPtr a) | Since: base-2.1 |
Show (Ptr a) | Since: base-2.1 |
Show a => Show (Ratio a) | Since: base-2.0.1 |
Show a => Show (Decoder a) | |
Show a => Show (IntMap a) | |
Show a => Show (Seq a) | |
Show a => Show (ViewL a) | |
Show a => Show (ViewR a) | |
Show a => Show (Intersection a) | |
Defined in Data.Set.Internal | |
Show a => Show (Set a) | |
Show a => Show (Tree a) | |
Show a => Show (RB a) | |
Show a => Show (Hashed a) | |
Show a => Show (Forest a) | |
Show a => Show (Heap a) | |
Show a => Show (Tree a) | |
Show a => Show (AnnotDetails a) | |
Defined in Text.PrettyPrint.Annotated.HughesPJ | |
Show (Doc a) | |
Show a => Show (Span a) | |
Show a => Show (Array a) | |
Show g => Show (StateGen g) | |
Show a => Show (FSATrace a) Source # | |
Show flag => Show (TyVarBndr flag) | |
Show a => Show (Array a) | |
Show a => Show (HashSet a) | |
Show a => Show (Maybe a) | Since: base-2.1 |
Show a => Show (a) | Since: base-4.15 |
Show a => Show [a] | Since: base-2.1 |
(Show a, Show b) => Show (Either a b) | Since: base-3.0 |
HasResolution a => Show (Fixed a) | Since: base-2.1 |
Show (Proxy s) | Since: base-4.7.0.0 |
(Show a, Show b) => Show (Arg a b) | Since: base-4.9.0.0 |
Show (TypeRep a) | |
Show (U1 p) | Since: base-4.9.0.0 |
Show (V1 p) | Since: base-4.9.0.0 |
Show (ST s a) | Since: base-2.1 |
(Show k, Show a) => Show (Map k a) | |
(Show p, Show a) => Show (Entry p a) | |
(Show1 m, Show a) => Show (MaybeT m a) | |
(Show k, Show v) => Show (HashMap k v) | |
(Show a, Show b) => Show (a, b) | Since: base-2.1 |
Show a => Show (Const a b) | This instance would be equivalent to the derived instances of the
Since: base-4.8.0.0 |
Show (f a) => Show (Ap f a) | Since: base-4.12.0.0 |
Show (f a) => Show (Alt f a) | Since: base-4.8.0.0 |
Show (a :~: b) | Since: base-4.7.0.0 |
Show (f p) => Show (Rec1 f p) | Since: base-4.7.0.0 |
Show (URec Char p) | Since: base-4.9.0.0 |
Show (URec Double p) | Since: base-4.9.0.0 |
Show (URec Float p) | |
Show (URec Int p) | Since: base-4.9.0.0 |
Show (URec Word p) | Since: base-4.9.0.0 |
(Show e, Show1 m, Show a) => Show (ExceptT e m a) | |
(Show1 f, Show a) => Show (IdentityT f a) | |
(Show w, Show1 m, Show a) => Show (WriterT w m a) | |
(Show w, Show1 m, Show a) => Show (WriterT w m a) | |
(Show a, Show b, Show c) => Show (a, b, c) | Since: base-2.1 |
(Show (f a), Show (g a)) => Show (Product f g a) | Since: base-4.18.0.0 |
(Show (f a), Show (g a)) => Show (Sum f g a) | Since: base-4.18.0.0 |
Show (a :~~: b) | Since: base-4.10.0.0 |
(Show (f p), Show (g p)) => Show ((f :*: g) p) | Since: base-4.7.0.0 |
(Show (f p), Show (g p)) => Show ((f :+: g) p) | Since: base-4.7.0.0 |
Show c => Show (K1 i c p) | Since: base-4.7.0.0 |
(Show a, Show b, Show c, Show d) => Show (a, b, c, d) | Since: base-2.1 |
Show (f (g a)) => Show (Compose f g a) | Since: base-4.18.0.0 |
Show (f (g p)) => Show ((f :.: g) p) | Since: base-4.7.0.0 |
Show (f p) => Show (M1 i c f p) | Since: base-4.7.0.0 |
(Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | Since: base-2.1 |
(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | Since: base-2.1 |
class Typeable (a :: k) Source #
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
class Eq a => Hashable a where Source #
The class of types that can be converted to a hash value.
Minimal implementation: hashWithSalt
.
Note: the hash is not guaranteed to be stable across library versions, operating systems or architectures. For stable hashing use named hashes: SHA256, CRC32 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 Source #
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
The Binary
class provides put
and get
, methods to encode and
decode a Haskell value to a lazy ByteString
. It mirrors the Read
and
Show
classes for textual representation of Haskell types, and is
suitable for serialising Haskell values to disk, over the network.
For decoding and generating simple external binary formats (e.g. C
structures), Binary may be used, but in general is not suitable
for complex protocols. Instead use the PutM
and Get
primitives
directly.
Instances of Binary should satisfy the following property:
decode . encode == id
That is, the get
and put
methods should be the inverse of each
other. A range of instances are provided for basic Haskell types.
Minimal complete definition
Nothing
Methods
Encode a value in the Put monad.
Decode a value in the Get monad
putList :: [t] -> Put Source #
Encode a list of values in the Put monad. The default implementation may be overridden to be more efficient but must still have the same encoding format.
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 !_ = ()