grisette-0.11.0.0: Symbolic evaluation as a library
Copyright(c) Sirui Lu 2024
LicenseBSD-3-Clause (see the LICENSE file)
Maintainersiruilu@cs.washington.edu
StabilityExperimental
PortabilityGHC only
Safe HaskellNone
LanguageHaskell2010

Grisette.Internal.TH.Derivation.UnaryOpCommon

Description

 
Synopsis

Documentation

data UnaryOpClassConfig Source #

Configuration for a unary operation type class generation on a GADT.

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.

Instances

Instances details
UnaryOpFunConfig UnaryOpFieldConfig Source # 
Instance details

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

genUnaryOpFun Source #

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 

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.

defaultUnaryOpInstanceTypeFromConfig :: DeriveConfig -> [(Type, Kind)] -> [(Type, Kind)] -> Name -> Q Type Source #

Default unary operation instance type generator.