Copyright | (c) Sirui Lu 2024 |
---|---|
License | BSD-3-Clause (see the LICENSE file) |
Maintainer | siruilu@cs.washington.edu |
Stability | Experimental |
Portability | GHC only |
Safe Haskell | None |
Language | Haskell2010 |
Grisette.Internal.TH.Derivation.Derive
Description
Synopsis
- derive :: [Name] -> [Name] -> Q [Dec]
- deriveWith :: DeriveConfig -> [Name] -> [Name] -> Q [Dec]
- allClasses0 :: [Name]
- allClasses01 :: [Name]
- allClasses012 :: [Name]
- basicClasses0 :: [Name]
- noExistentialClasses0 :: [Name]
- concreteOrdClasses0 :: [Name]
- basicClasses1 :: [Name]
- noExistentialClasses1 :: [Name]
- concreteOrdClasses1 :: [Name]
- basicClasses2 :: [Name]
- noExistentialClasses2 :: [Name]
- concreteOrdClasses2 :: [Name]
- showClasses :: [Name]
- pprintClasses :: [Name]
- evalSymClasses :: [Name]
- extractSymClasses :: [Name]
- substSymClasses :: [Name]
- allSymsClasses :: [Name]
- eqClasses :: [Name]
- ordClasses :: [Name]
- symOrdClasses :: [Name]
- symEqClasses :: [Name]
- unifiedSymOrdClasses :: [Name]
- unifiedSymEqClasses :: [Name]
- mergeableClasses :: [Name]
- nfDataClasses :: [Name]
- hashableClasses :: [Name]
- toSymClasses :: [Name]
- toConClasses :: [Name]
- serialClasses :: [Name]
- simpleMergeableClasses :: [Name]
- unifiedSimpleMergeableClasses :: [Name]
- filterExactNumArgs :: Int -> [Name] -> [Name]
- filterLeqNumArgs :: Int -> [Name] -> [Name]
Documentation
derive :: [Name] -> [Name] -> Q [Dec] Source #
Derive the specified classes for a data type with the given name.
See deriveWith
for more details.
deriveWith :: DeriveConfig -> [Name] -> [Name] -> Q [Dec] Source #
Derive the specified classes for a data type with the given name.
Support the following classes for both vanilla data types and GADTs.
Mergeable
Mergeable1
Mergeable2
Mergeable3
EvalSym
EvalSym1
EvalSym2
ExtractSym
ExtractSym1
ExtractSym2
SubstSym
SubstSym1
SubstSym2
NFData
NFData1
NFData2
Hashable
Hashable1
Hashable2
Show
Show1
Show2
PPrint
PPrint1
PPrint2
AllSyms
AllSyms1
AllSyms2
Eq
Eq1
Eq2
Ord
Ord1
Ord2
SymOrd
SymOrd1
SymOrd2
SymEq
SymEq1
SymEq2
UnifiedSymEq
UnifiedSymEq1
UnifiedSymEq2
UnifiedSymOrd
UnifiedSymOrd1
UnifiedSymOrd2
ToSym
ToSym1
ToSym2
ToCon
ToCon1
ToCon2
Serial
Serial1
Serial2
SimpleMergeable
SimpleMergeable1
SimpleMergeable2
Binary
Serialize
Note that the following type classes cannot be derived for GADTs with existential type variables.
allClasses0 :: [Name] Source #
allClasses01 :: [Name] Source #
All the classes that can be derived for GADT functors.
This includes all the classes in allClasses0
and allClasses1
.
allClasses012 :: [Name] Source #
All the classes that can be derived for GADT functors.
This includes all the classes in allClasses0
, allClasses1
,
and allClasses2
.
basicClasses0 :: [Name] Source #
noExistentialClasses0 :: [Name] Source #
concreteOrdClasses0 :: [Name] Source #
Concrete ordered classes that can be derived for GADTs that
- uses unified evaluation mode, or
- does not contain any symbolic variables.
This includes:
basicClasses1 :: [Name] Source #
Basic classes for GADT functors.
This includes:
noExistentialClasses1 :: [Name] Source #
concreteOrdClasses1 :: [Name] Source #
*1
concrete ordered classes that can be derived for GADT functors that
- uses unified evaluation mode, or
- does not contain any symbolic variables.
This includes:
basicClasses2 :: [Name] Source #
Basic classes for GADT functors.
This includes:
noExistentialClasses2 :: [Name] Source #
concreteOrdClasses2 :: [Name] Source #
*2
concrete ordered classes that can be derived for GADT functors that
- uses unified evaluation mode, or
- does not contain any symbolic variables.
This includes:
showClasses :: [Name] Source #
pprintClasses :: [Name] Source #
evalSymClasses :: [Name] Source #
extractSymClasses :: [Name] Source #
substSymClasses :: [Name] Source #
allSymsClasses :: [Name] Source #
symOrdClasses :: [Name] Source #
symEqClasses :: [Name] Source #
unifiedSymOrdClasses :: [Name] Source #
UnifiedSymOrd
classes that can be derived for GADTs.
This includes:
unifiedSymEqClasses :: [Name] Source #
UnifiedSymEq
classes that can be derived for GADTs.
This includes:
mergeableClasses :: [Name] Source #
Mergeable
classes that can be derived for GADTs.
This includes:
nfDataClasses :: [Name] Source #
hashableClasses :: [Name] Source #
toSymClasses :: [Name] Source #
toConClasses :: [Name] Source #
serialClasses :: [Name] Source #
simpleMergeableClasses :: [Name] Source #
SimpleMergeable
classes that can be derived for GADTs.
This includes:
unifiedSimpleMergeableClasses :: [Name] Source #
UnifiedSimpleMergeable
classes that can be derived for GADTs.
This includes: