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.UnaryOpCommon
Description
Synopsis
- data UnaryOpClassConfig = UnaryOpClassConfig {
- unaryOpConfigs :: [UnaryOpConfig]
- unaryOpInstanceNames :: [Name]
- unaryOpContextNames :: Maybe [Name]
- unaryOpExtraVars :: DeriveConfig -> Q [(Type, Kind)]
- unaryOpInstanceTypeFromConfig :: DeriveConfig -> [(Type, Kind)] -> [(Type, Kind)] -> Name -> Q Type
- unaryOpAllowExistential :: Bool
- data UnaryOpFieldConfig = UnaryOpFieldConfig {
- extraPatNames :: [String]
- extraLiftedPatNames :: Int -> [String]
- fieldResFun :: ConstructorVariant -> Name -> [Exp] -> Int -> Exp -> Exp -> Q (Exp, [Bool])
- fieldCombineFun :: Int -> Int -> ConstructorVariant -> Name -> [Exp] -> [Exp] -> Q (Exp, [Bool])
- fieldFunExp :: FieldFunExp
- data UnaryOpConfig where
- UnaryOpConfig :: forall config. UnaryOpFunConfig config => config -> [Name] -> UnaryOpConfig
- class UnaryOpFunConfig config where
- genUnaryOpFun :: DeriveConfig -> config -> [Name] -> Int -> [(Type, Kind)] -> [(Type, Kind)] -> [(Type, Kind)] -> (Name -> Bool) -> [ConstructorInfo] -> Q Dec
- type FieldFunExp = Map Name Name -> Map Name [Name] -> Type -> Q Exp
- defaultFieldResFun :: ConstructorVariant -> Name -> [Exp] -> Int -> Exp -> Exp -> Q (Exp, [Bool])
- defaultFieldFunExp :: [Name] -> FieldFunExp
- genUnaryOpClass :: DeriveConfig -> UnaryOpClassConfig -> Int -> Name -> Q [Dec]
- defaultUnaryOpInstanceTypeFromConfig :: DeriveConfig -> [(Type, Kind)] -> [(Type, Kind)] -> Name -> Q Type
Documentation
data UnaryOpClassConfig Source #
Configuration for a unary operation type class generation on a GADT.
Constructors
UnaryOpClassConfig | |
Fields
|
data UnaryOpFieldConfig Source #
Configuration for the derivation rules for a unary operation that can be derived by transforming each field and then combining the results.
Constructors
UnaryOpFieldConfig | |
Fields
|
Instances
UnaryOpFunConfig UnaryOpFieldConfig Source # | |
Defined in Grisette.Internal.TH.Derivation.UnaryOpCommon Methods genUnaryOpFun :: DeriveConfig -> UnaryOpFieldConfig -> [Name] -> Int -> [(Type, Kind)] -> [(Type, Kind)] -> [(Type, Kind)] -> (Name -> Bool) -> [ConstructorInfo] -> Q Dec Source # |
data UnaryOpConfig where Source #
Configuration for a unary function field expression generation on a GADT.
Constructors
UnaryOpConfig :: forall config. UnaryOpFunConfig config => config -> [Name] -> UnaryOpConfig |
class UnaryOpFunConfig config where Source #
Configuration for the derivation rules for a unary operation.
Methods
Arguments
:: DeriveConfig | Derive configuration |
-> config | Configuration |
-> [Name] | Function names |
-> Int | Number of functor arguments to the class |
-> [(Type, Kind)] | Extra variables |
-> [(Type, Kind)] | Kept variables |
-> [(Type, Kind)] | Argument variables |
-> (Name -> Bool) | Whether the variable is used in fields |
-> [ConstructorInfo] | Constructor infos |
-> Q Dec |
Instances
UnaryOpFunConfig UnaryOpFieldConfig Source # | |
Defined in Grisette.Internal.TH.Derivation.UnaryOpCommon Methods genUnaryOpFun :: DeriveConfig -> UnaryOpFieldConfig -> [Name] -> Int -> [(Type, Kind)] -> [(Type, Kind)] -> [(Type, Kind)] -> (Name -> Bool) -> [ConstructorInfo] -> Q Dec Source # | |
UnaryOpFunConfig UnaryOpUnifiedConfig Source # | |
Defined in Grisette.Internal.TH.Derivation.UnifiedOpCommon Methods genUnaryOpFun :: DeriveConfig -> UnaryOpUnifiedConfig -> [Name] -> Int -> [(Type, Kind)] -> [(Type, Kind)] -> [(Type, Kind)] -> (Name -> Bool) -> [ConstructorInfo] -> Q Dec Source # |
type FieldFunExp = Map Name Name -> Map Name [Name] -> Type -> Q Exp Source #
Type of field function expression generator.
defaultFieldResFun :: ConstructorVariant -> Name -> [Exp] -> Int -> Exp -> Exp -> Q (Exp, [Bool]) Source #
Default field result function.
defaultFieldFunExp :: [Name] -> FieldFunExp Source #
Default field function expression generator.
genUnaryOpClass :: DeriveConfig -> UnaryOpClassConfig -> Int -> Name -> Q [Dec] Source #
Generate a unary operation type class instance for a data type.