| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
PatSyn
- data PatSyn
- mkPatSyn :: Name -> Bool -> ([TyVar], ThetaType) -> ([TyVar], ThetaType) -> [Type] -> Type -> (Id, Bool) -> Maybe (Id, Bool) -> PatSyn
- patSynName :: PatSyn -> Name
- patSynArity :: PatSyn -> Arity
- patSynIsInfix :: PatSyn -> Bool
- patSynArgs :: PatSyn -> [Type]
- patSynTyDetails :: PatSyn -> HsPatSynDetails Type
- patSynType :: PatSyn -> Type
- patSynMatcher :: PatSyn -> (Id, Bool)
- patSynBuilder :: PatSyn -> Maybe (Id, Bool)
- patSynExTyVars :: PatSyn -> [TyVar]
- patSynSig :: PatSyn -> ([TyVar], [TyVar], ThetaType, ThetaType, [Type], Type)
- patSynInstArgTys :: PatSyn -> [Type] -> [Type]
- patSynInstResTy :: PatSyn -> [Type] -> Type
- tidyPatSynIds :: (Id -> Id) -> PatSyn -> PatSyn
Main data types
data PatSyn
A pattern synonym See Note [Pattern synonym representation]
Arguments
| :: Name | |
| -> Bool | Is the pattern synonym declared infix? |
| -> ([TyVar], ThetaType) | Universially-quantified type variables and required dicts |
| -> ([TyVar], ThetaType) | Existentially-quantified type variables and provided dicts |
| -> [Type] | Original arguments |
| -> Type | Original result type |
| -> (Id, Bool) | Name of matcher |
| -> Maybe (Id, Bool) | Name of builder |
| -> PatSyn |
Build a new pattern synonym
Type deconstruction
patSynName :: PatSyn -> Name
patSynArity :: PatSyn -> Arity
Arity of the pattern synonym
patSynIsInfix :: PatSyn -> Bool
Should the PatSyn be presented infix?
patSynArgs :: PatSyn -> [Type]
patSynType :: PatSyn -> Type
patSynMatcher :: PatSyn -> (Id, Bool)
patSynBuilder :: PatSyn -> Maybe (Id, Bool)
patSynExTyVars :: PatSyn -> [TyVar]
patSynInstArgTys :: PatSyn -> [Type] -> [Type]
patSynInstResTy :: PatSyn -> [Type] -> Type
tidyPatSynIds :: (Id -> Id) -> PatSyn -> PatSyn