Agda-2.5.3: A dependently typed functional programming language and proof assistant

Safe HaskellNone
LanguageHaskell2010

Agda.Syntax.Abstract.Pattern

Contents

Description

Auxiliary functions to handle patterns in the abstract syntax.

Generic and specific traversals.

Synopsis

Generic traversals

class APatternLike a p | p -> a where Source #

Generic pattern traversal.

Methods

foldrAPattern Source #

Arguments

:: Monoid m 
=> (Pattern' a -> m -> m)

Combine a pattern and the value computed from its subpatterns.

-> p 
-> m 

Fold pattern.

foldrAPattern Source #

Arguments

:: (Monoid m, Foldable f, APatternLike a b, f b ~ p) 
=> (Pattern' a -> m -> m)

Combine a pattern and the value computed from its subpatterns.

-> p 
-> m 

Fold pattern.

traverseAPatternM Source #

Arguments

:: Monad m 
=> (Pattern' a -> m (Pattern' a))

pre: Modification before recursion.

-> (Pattern' a -> m (Pattern' a))

post: Modification after recursion.

-> p 
-> m p 

Traverse pattern.

traverseAPatternM Source #

Arguments

:: (Traversable f, APatternLike a q, f q ~ p, Monad m) 
=> (Pattern' a -> m (Pattern' a))

pre: Modification before recursion.

-> (Pattern' a -> m (Pattern' a))

post: Modification after recursion.

-> p 
-> m p 

Traverse pattern.

Instances

APatternLike a b => APatternLike a (FieldAssignment' b) Source # 

Methods

foldrAPattern :: Monoid m => (Pattern' a -> m -> m) -> FieldAssignment' b -> m Source #

traverseAPatternM :: Monad m => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> FieldAssignment' b -> m (FieldAssignment' b) Source #

APatternLike a b => APatternLike a (Maybe b) Source # 

Methods

foldrAPattern :: Monoid m => (Pattern' a -> m -> m) -> Maybe b -> m Source #

traverseAPatternM :: Monad m => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> Maybe b -> m (Maybe b) Source #

APatternLike a b => APatternLike a [b] Source # 

Methods

foldrAPattern :: Monoid m => (Pattern' a -> m -> m) -> [b] -> m Source #

traverseAPatternM :: Monad m => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> [b] -> m [b] Source #

APatternLike a b => APatternLike a (Arg b) Source # 

Methods

foldrAPattern :: Monoid m => (Pattern' a -> m -> m) -> Arg b -> m Source #

traverseAPatternM :: Monad m => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> Arg b -> m (Arg b) Source #

APatternLike a (Pattern' a) Source # 

Methods

foldrAPattern :: Monoid m => (Pattern' a -> m -> m) -> Pattern' a -> m Source #

traverseAPatternM :: Monad m => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> Pattern' a -> m (Pattern' a) Source #

APatternLike a b => APatternLike a (Named n b) Source # 

Methods

foldrAPattern :: Monoid m => (Pattern' a -> m -> m) -> Named n b -> m Source #

traverseAPatternM :: Monad m => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> Named n b -> m (Named n b) Source #

foldAPattern :: (APatternLike a p, Monoid m) => (Pattern' a -> m) -> p -> m Source #

Compute from each subpattern a value and collect them all in a monoid.

preTraverseAPatternM Source #

Arguments

:: (APatternLike a b, Monad m) 
=> (Pattern' a -> m (Pattern' a))

pre: Modification before recursion.

-> b 
-> m b 

Traverse pattern(s) with a modification before the recursive descent.

postTraverseAPatternM Source #

Arguments

:: (APatternLike a b, Monad m) 
=> (Pattern' a -> m (Pattern' a))

post: Modification after recursion.

-> b 
-> m b 

Traverse pattern(s) with a modification after the recursive descent.

Specific folds

patternVars :: forall a p. APatternLike a p => p -> [Name] Source #

Collect pattern variables in left-to-right textual order.

containsAPattern :: APatternLike a p => (Pattern' a -> Bool) -> p -> Bool Source #

Check if a pattern contains a specific (sub)pattern.

containsAbsurdPattern :: APatternLike a p => p -> Bool Source #

Check if a pattern contains an absurd pattern. For instance, suc (), does so.

Precondition: contains no pattern synonyms.

containsAsPattern :: APatternLike a p => p -> Bool Source #

Check if a pattern contains an @-pattern.

Precondition: contains no pattern synonyms.