Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- clauseArgs :: Clause -> Args
- clauseElims :: Clause -> Elims
- class FunArity a where
- class LabelPatVars a b where
- type PatVarLabel b
- labelPatVars :: a -> State [PatVarLabel b] b
- unlabelPatVars :: b -> a
- numberPatVars :: (LabelPatVars a b, PatVarLabel b ~ Int) => Int -> Permutation -> a -> b
- unnumberPatVars :: LabelPatVars a b => b -> a
- dbPatPerm :: [NamedArg DeBruijnPattern] -> Maybe Permutation
- dbPatPerm' :: Bool -> [NamedArg DeBruijnPattern] -> Maybe Permutation
- clausePerm :: Clause -> Maybe Permutation
- patternToElim :: Arg DeBruijnPattern -> Elim
- patternsToElims :: [NamedArg DeBruijnPattern] -> [Elim]
- patternToTerm :: DeBruijnPattern -> Term
- class MapNamedArgPattern a p where
- mapNamedArgPattern :: (NamedArg (Pattern' a) -> NamedArg (Pattern' a)) -> p -> p
- class PatternLike a b where
- foldrPattern :: Monoid m => (Pattern' a -> m -> m) -> b -> m
- traversePatternM :: Monad m => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> b -> m b
- foldPattern :: (PatternLike a b, Monoid m) => (Pattern' a -> m) -> b -> m
- preTraversePatternM :: (PatternLike a b, Monad m) => (Pattern' a -> m (Pattern' a)) -> b -> m b
- postTraversePatternM :: (PatternLike a b, Monad m) => (Pattern' a -> m (Pattern' a)) -> b -> m b
- class CountPatternVars a where
- countPatternVars :: a -> Int
- class PatternVarModalities p where
- type PatVar p
- patternVarModalities :: p -> [(PatVar p, Modality)]
Tools for clauses
clauseArgs :: Clause -> Args Source #
Translate the clause patterns to terms with free variables bound by the clause telescope.
Precondition: no projection patterns.
clauseElims :: Clause -> Elims Source #
Translate the clause patterns to an elimination spine with free variables bound by the clause telescope.
class FunArity a where Source #
Arity of a function, computed from clauses.
Tools for patterns
class LabelPatVars a b where Source #
Label the pattern variables from left to right using one label for each variable pattern and one for each dot pattern.
Nothing
type PatVarLabel b Source #
labelPatVars :: a -> State [PatVarLabel b] b Source #
default labelPatVars :: (Traversable f, LabelPatVars a' b', PatVarLabel b ~ PatVarLabel b', f a' ~ a, f b' ~ b) => a -> State [PatVarLabel b] b Source #
unlabelPatVars :: b -> a Source #
Intended, but unpractical due to the absence of type-level lambda, is:
labelPatVars :: f (Pattern' x) -> State [i] (f (Pattern' (i,x)))
default unlabelPatVars :: (Traversable f, LabelPatVars a' b', f a' ~ a, f b' ~ b) => b -> a Source #
Instances
LabelPatVars Pattern DeBruijnPattern Source # | |
Defined in Agda.Syntax.Internal.Pattern labelPatVars :: Pattern -> State [PatVarLabel DeBruijnPattern] DeBruijnPattern Source # | |
LabelPatVars a b => LabelPatVars (Arg a) (Arg b) Source # | |
Defined in Agda.Syntax.Internal.Pattern type PatVarLabel (Arg b) Source # labelPatVars :: Arg a -> State [PatVarLabel (Arg b)] (Arg b) Source # unlabelPatVars :: Arg b -> Arg a Source # | |
LabelPatVars a b => LabelPatVars [a] [b] Source # | |
Defined in Agda.Syntax.Internal.Pattern type PatVarLabel [b] Source # labelPatVars :: [a] -> State [PatVarLabel [b]] [b] Source # unlabelPatVars :: [b] -> [a] Source # | |
LabelPatVars a b => LabelPatVars (Named x a) (Named x b) Source # | |
Defined in Agda.Syntax.Internal.Pattern type PatVarLabel (Named x b) Source # labelPatVars :: Named x a -> State [PatVarLabel (Named x b)] (Named x b) Source # unlabelPatVars :: Named x b -> Named x a Source # |
numberPatVars :: (LabelPatVars a b, PatVarLabel b ~ Int) => Int -> Permutation -> a -> b Source #
Augment pattern variables with their de Bruijn index.
unnumberPatVars :: LabelPatVars a b => b -> a Source #
dbPatPerm :: [NamedArg DeBruijnPattern] -> Maybe Permutation Source #
dbPatPerm' :: Bool -> [NamedArg DeBruijnPattern] -> Maybe Permutation Source #
Computes the permutation from the clause telescope to the pattern variables.
Use as fromMaybe IMPOSSIBLE . dbPatPerm
to crash
in a controlled way if a de Bruijn index is out of scope here.
The first argument controls whether dot patterns counts as variables or not.
clausePerm :: Clause -> Maybe Permutation Source #
Computes the permutation from the clause telescope to the pattern variables.
Use as fromMaybe IMPOSSIBLE . clausePerm
to crash
in a controlled way if a de Bruijn index is out of scope here.
patternToElim :: Arg DeBruijnPattern -> Elim Source #
Turn a pattern into a term. Projection patterns are turned into projection eliminations, other patterns into apply elimination.
patternsToElims :: [NamedArg DeBruijnPattern] -> [Elim] Source #
patternToTerm :: DeBruijnPattern -> Term Source #
class MapNamedArgPattern a p where Source #
Nothing
mapNamedArgPattern :: (NamedArg (Pattern' a) -> NamedArg (Pattern' a)) -> p -> p Source #
default mapNamedArgPattern :: (Functor f, MapNamedArgPattern a p', p ~ f p') => (NamedArg (Pattern' a) -> NamedArg (Pattern' a)) -> p -> p Source #
Instances
MapNamedArgPattern a (NamedArg (Pattern' a)) Source # | Modify the content of Note: the |
MapNamedArgPattern a p => MapNamedArgPattern a [p] Source # | |
Defined in Agda.Syntax.Internal.Pattern |
class PatternLike a b where Source #
Generic pattern traversal.
Pre-applies a pattern modification, recurses, and post-applies another one.
Nothing
:: Monoid m | |
=> (Pattern' a -> m -> m) | Combine a pattern and the value computed from its subpatterns. |
-> b | |
-> m |
Fold pattern.
default foldrPattern :: (Monoid m, Foldable f, PatternLike a p, f p ~ b) => (Pattern' a -> m -> m) -> b -> m Source #
:: Monad m | |
=> (Pattern' a -> m (Pattern' a)) |
|
-> (Pattern' a -> m (Pattern' a)) |
|
-> b | |
-> m b |
Traverse pattern.
default traversePatternM :: (Traversable f, PatternLike a p, f p ~ b, Monad m) => (Pattern' a -> m (Pattern' a)) -> (Pattern' a -> m (Pattern' a)) -> b -> m b Source #
Instances
PatternLike a b => PatternLike a (Arg b) Source # | |
PatternLike a (Pattern' a) Source # | |
PatternLike a b => PatternLike a [b] Source # | |
Defined in Agda.Syntax.Internal.Pattern | |
PatternLike a b => PatternLike a (Named x b) Source # | |
foldPattern :: (PatternLike a b, Monoid m) => (Pattern' a -> m) -> b -> m Source #
Compute from each subpattern a value and collect them all in a monoid.
:: (PatternLike a b, Monad m) | |
=> (Pattern' a -> m (Pattern' a)) |
|
-> b | |
-> m b |
Traverse pattern(s) with a modification before the recursive descent.
:: (PatternLike a b, Monad m) | |
=> (Pattern' a -> m (Pattern' a)) |
|
-> b | |
-> m b |
Traverse pattern(s) with a modification after the recursive descent.
class CountPatternVars a where Source #
Nothing
countPatternVars :: a -> Int Source #
default countPatternVars :: (Foldable f, CountPatternVars b, f b ~ a) => a -> Int Source #
Instances
CountPatternVars a => CountPatternVars (Arg a) Source # | |
Defined in Agda.Syntax.Internal.Pattern countPatternVars :: Arg a -> Int Source # | |
CountPatternVars (Pattern' x) Source # | |
Defined in Agda.Syntax.Internal.Pattern countPatternVars :: Pattern' x -> Int Source # | |
CountPatternVars a => CountPatternVars [a] Source # | |
Defined in Agda.Syntax.Internal.Pattern countPatternVars :: [a] -> Int Source # | |
CountPatternVars a => CountPatternVars (Named x a) Source # | |
Defined in Agda.Syntax.Internal.Pattern countPatternVars :: Named x a -> Int Source # |
class PatternVarModalities p where Source #
patternVarModalities :: p -> [(PatVar p, Modality)] Source #
Get the list of pattern variables annotated with modalities.
Instances
PatternVarModalities a => PatternVarModalities (Arg a) Source # | |
PatternVarModalities (Pattern' x) Source # | |
PatternVarModalities a => PatternVarModalities [a] Source # | |
Defined in Agda.Syntax.Internal.Pattern patternVarModalities :: [a] -> [(PatVar [a], Modality)] Source # | |
PatternVarModalities a => PatternVarModalities (Named s a) Source # | |