| 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.