ghc-7.8.2: The GHC API

Safe Haskell | None
Language | Haskell98

PatSyn

Contents

- Main data types
  - Type deconstruction

Synopsis

- data PatSyn
- mkPatSyn :: Name -> Bool -> [Var] -> [TyVar] -> [TyVar] -> ThetaType -> ThetaType -> Type -> Id -> Maybe Id -> PatSyn
- patSynId :: PatSyn -> Id
- patSynType :: PatSyn -> Type
- patSynArity :: PatSyn -> Arity
- patSynIsInfix :: PatSyn -> Bool
- patSynArgs :: PatSyn -> [Var]
- patSynArgTys :: PatSyn -> [Type]
- patSynTyDetails :: PatSyn -> HsPatSynDetails Type
- patSynWrapper :: PatSyn -> Maybe Id
- patSynMatcher :: PatSyn -> Id
- patSynExTyVars :: PatSyn -> [TyVar]
- patSynSig :: PatSyn -> ([TyVar], [TyVar], (ThetaType, ThetaType))
- patSynInstArgTys :: PatSyn -> [Type] -> [Type]

# Main data types

data PatSyn

A pattern synonym

Instances

Eq PatSyn |
Data PatSyn |
Ord PatSyn |
OutputableBndr PatSyn |
Outputable PatSyn |
Uniquable PatSyn |
NamedThing PatSyn |
Typeable * PatSyn |

mkPatSyn

Arguments

:: Name |
-> Bool | Is the pattern synonym declared infix?
-> [Var] | Original arguments
-> [TyVar] | Universially-quantified type variables
-> [TyVar] | Existentially-quantified type variables
-> ThetaType | Wanted dicts
-> ThetaType | Given dicts
-> Type | Original result type
-> Id | Name of matcher
-> Maybe Id | Name of wrapper
-> PatSyn |

Build a new pattern synonym

## Type deconstruction

patSynId :: PatSyn -> Id

The `Name` of the `PatSyn`, giving it a unique, rooted identification

patSynType :: PatSyn -> Type

patSynArity :: PatSyn -> Arity

Arity of the pattern synonym

patSynIsInfix :: PatSyn -> Bool

Should the `PatSyn` be presented infix?

patSynArgs :: PatSyn -> [Var]

patSynArgTys :: PatSyn -> [Type]

patSynTyDetails :: PatSyn -> HsPatSynDetails Type

patSynWrapper :: PatSyn -> Maybe Id

patSynMatcher :: PatSyn -> Id

patSynExTyVars :: PatSyn -> [TyVar]

patSynSig :: PatSyn -> ([TyVar], [TyVar], (ThetaType, ThetaType))

patSynInstArgTys :: PatSyn -> [Type] -> [Type]