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.DeriveUnifiedInterface
Description
Synopsis
- data TypeableMode = TypeableMode
- data PrimaryUnifiedConstraint = PrimaryUnifiedConstraint Name Bool
- data UnifiedInstance = UnifiedInstance {
- _cls :: Name
- _clsWithFunc :: Name
- _withFunc :: Name
- _withFunc1 :: Maybe Name
- deriveUnifiedInterfaceExtra :: [SomeDeriveTypeParamHandler] -> Name -> Name -> Name -> Q [Dec]
- deriveUnifiedInterface :: Name -> Name -> Name -> Q [Dec]
- deriveUnifiedInterfaces :: Name -> Name -> [Name] -> Q [Dec]
- deriveUnifiedInterface1Extra :: [SomeDeriveTypeParamHandler] -> Name -> Name -> Name -> Name -> Name -> Q [Dec]
- deriveUnifiedInterface1 :: Name -> Name -> Name -> Name -> Name -> Q [Dec]
- deriveUnifiedInterface1s :: Name -> Name -> Name -> Name -> [Name] -> Q [Dec]
- deriveFunctorArgUnifiedInterfaceExtra :: [SomeDeriveTypeParamHandler] -> Name -> Name -> Name -> Name -> Name -> Q [Dec]
- deriveFunctorArgUnifiedInterface :: Name -> Name -> Name -> Name -> Name -> Q [Dec]
- deriveFunctorArgUnifiedInterfaces :: Name -> Name -> Name -> Name -> [Name] -> Q [Dec]
Documentation
data TypeableMode Source #
Add a Typeable
constraint to the modes.
Constructors
TypeableMode |
Instances
DeriveTypeParamHandler TypeableMode Source # | |
Defined in Grisette.Internal.TH.DeriveUnifiedInterface Methods handleTypeParams :: Int -> TypeableMode -> [([(TyVarBndrUnit, Maybe Type)], Maybe [Pred])] -> Q [([(TyVarBndrUnit, Maybe Type)], Maybe [Pred])] Source # handleBody :: TypeableMode -> [[Type]] -> Q [Pred] Source # |
data PrimaryUnifiedConstraint Source #
Add a primary unified constraint that applies to all the type parameters with the desired kind.
Constructors
PrimaryUnifiedConstraint Name Bool |
Instances
DeriveTypeParamHandler PrimaryUnifiedConstraint Source # | |
Defined in Grisette.Internal.TH.DeriveUnifiedInterface Methods handleTypeParams :: Int -> PrimaryUnifiedConstraint -> [([(TyVarBndrUnit, Maybe Type)], Maybe [Pred])] -> Q [([(TyVarBndrUnit, Maybe Type)], Maybe [Pred])] Source # handleBody :: PrimaryUnifiedConstraint -> [[Type]] -> Q [Pred] Source # |
data UnifiedInstance Source #
Provide an instance for a unified interface.
Constructors
UnifiedInstance | |
Fields
|
Instances
DeriveInstanceProvider UnifiedInstance Source # | |
Defined in Grisette.Internal.TH.DeriveUnifiedInterface Methods instanceDeclaration :: UnifiedInstance -> [[(TyVarBndrUnit, Maybe Type)]] -> [Pred] -> [Type] -> Q [Dec] Source # |
deriveUnifiedInterfaceExtra :: [SomeDeriveTypeParamHandler] -> Name -> Name -> Name -> Q [Dec] Source #
Derive an instance for a unified interface, with extra handlers.
deriveUnifiedInterface :: Name -> Name -> Name -> Q [Dec] Source #
Derive an instance for a unified interface.
deriveUnifiedInterfaces :: Name -> Name -> [Name] -> Q [Dec] Source #
Derive instances for a list of types for a unified interface.
deriveUnifiedInterface1Extra :: [SomeDeriveTypeParamHandler] -> Name -> Name -> Name -> Name -> Name -> Q [Dec] Source #
Derive an instance for a unified interface for functors, with extra handlers.
deriveUnifiedInterface1 :: Name -> Name -> Name -> Name -> Name -> Q [Dec] Source #
Derive an instance for a unified interface for functors.
deriveUnifiedInterface1s :: Name -> Name -> Name -> Name -> [Name] -> Q [Dec] Source #
Derive instances for a list of types for a unified interface for functors.
deriveFunctorArgUnifiedInterfaceExtra :: [SomeDeriveTypeParamHandler] -> Name -> Name -> Name -> Name -> Name -> Q [Dec] Source #
Derive an instance for a unified interface, with extra handlers. The type being derived may have functor type parameters.