| 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 | Safe-Inferred |
| 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.
MergeableMergeable1Mergeable2Mergeable3EvalSymEvalSym1EvalSym2ExtractSymExtractSym1ExtractSym2SubstSymSubstSym1SubstSym2NFDataNFData1NFData2HashableHashable1Hashable2ShowShow1Show2PPrintPPrint1PPrint2AllSymsAllSyms1AllSyms2EqEq1Eq2OrdOrd1Ord2SymOrdSymOrd1SymOrd2SymEqSymEq1SymEq2UnifiedSymEqUnifiedSymEq1UnifiedSymEq2UnifiedSymOrdUnifiedSymOrd1UnifiedSymOrd2ToSymToSym1ToSym2ToConToCon1ToCon2SerialSerial1Serial2SimpleMergeableSimpleMergeable1SimpleMergeable2BinarySerialize
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: