ModuleAgda-2.7.0.1Haskell2010
Agda.Syntax.Abstract.Pattern
Auxiliary functions to handle patterns in the abstract syntax.
Generic and specific traversals.
- 2 types
- 4 classes
- 24 values
- PackageAgda-2.7.0.1
- Exports30
- LanguageHaskell2010
- LicenceMIT
- SourcePattern.hs
Generic traversals
7 declarationsMethods
mapNamedArgPattern :: (NAP -> NAP) -> a -> a
Instances5MapNamedArgPattern
MapNamedArgPattern NAPDefined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternMapNamedArgPattern a => MapNamedArgPattern (FieldAssignment' a)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternMapNamedArgPattern a => MapNamedArgPattern (Maybe a)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternMapNamedArgPattern a => MapNamedArgPattern [a]Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.Pattern(MapNamedArgPattern a, MapNamedArgPattern b) => MapNamedArgPattern (a, b)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.Pattern
Generic pattern traversal.
Associated types
type family ADotT p
Instances7APatternLike, …
APatternLike (Pattern' a)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternAPatternLike a => APatternLike (Arg a)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternAPatternLike a => APatternLike (FieldAssignment' a)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternAPatternLike a => APatternLike (Maybe a)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternAPatternLike a => APatternLike [a]Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternAPatternLike a => APatternLike (Named n a)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.Pattern(APatternLike a, APatternLike b, ADotT a ~ ADotT b) => APatternLike (a, b)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.Pattern
Compute from each subpattern a value and collect them all in a monoid.
preTraverseAPatternM Traverse pattern(s) with a modification before the recursive descent.
Traverse pattern(s) with a modification after the recursive descent.
Map pattern(s) with a modification after the recursive descent.
Specific folds
5 declarationsCollect pattern variables in left-to-right textual order.
Check if a pattern contains a specific (sub)pattern.
Check if a pattern contains an absurd pattern.
For instance, suc (), does so.
Precondition: contains no pattern synonyms.
Check if a pattern contains an @-pattern.
Check if any user-written pattern variables occur more than once, and throw the given error if they do.
Specific traversals
4 declarationsPattern substitution.
For the embedded expression, the given pattern substitution is turned into an expression substitution.
substPattern' Pattern substitution, parametrized by substitution function for embedded expressions.
Convert a pattern to an expression.
Does not support all cases of patterns. Result has no Range info, except in identifiers.
This function is only used in expanding pattern synonyms and in Agda.Syntax.Translation.InternalToAbstract, so we can cut some corners.
Converting a pattern to an expression.
The Hiding context is remembered to create instance metas when translating absurd patterns in instance position.
Instances5PatternToExpr
PatternToExpr Pattern ExprDefined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternPatternToExpr p e => PatternToExpr (Arg p) (Arg e)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternPatternToExpr p e => PatternToExpr (FieldAssignment' p) (FieldAssignment' e)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternPatternToExpr p e => PatternToExpr [p] [e]Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternPatternToExpr p e => PatternToExpr (Named n p) (Named n e)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.Pattern
Other pattern utilities
4 declarationsSplit patterns into (patterns, trailing with-patterns).
Get the tail of with-patterns of a pattern spine.
The next patterns are ...
(This view discards PatInfo.)
Constructors
LHSAppP (NAPs e)Application patterns (non-empty list).
LHSProjP ProjOrigin AmbiguousQName (NamedArg (Pattern' e))A projection pattern. Is also stored unmodified here.
LHSWithP [Pattern' e]With patterns (non-empty list). These patterns are not prefixed with WithP.
Instances1Show
Show e => Show (LHSPatternView e)Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.Pattern
Construct the LHSPatternView of the given list (if not empty).
Return the view and the remaining patterns.
Left-hand-side manipulation
10 declarationsConvert a focused lhs to spine view and back.
Methods
lhsToSpine :: a -> bspineToLhs :: b -> a
Instances3LHSToSpine
LHSToSpine Clause SpineClauseDefined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternClause instance.
LHSToSpine LHS SpineLHSDefined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternLHS instance.
LHSToSpine a b => LHSToSpine [a] [b]Defined in Agda-2.7.0.1 · Agda.Syntax.Abstract.PatternList instance (for clauses).
Add applicative patterns (non-projection / non-with patterns) to the right.
Add with-patterns to the right.
Add projection, with, and applicative patterns to the right.
Used for checking pattern linearity.
Used in 'Agda.Syntax.Translation.AbstractToConcrete'.
Returns a DefP.