Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- checkLeftHandSide :: Call -> Range -> Maybe QName -> [NamedArg Pattern] -> Type -> Maybe Substitution -> [ProblemEq] -> (LHSResult -> TCM a) -> TCM a
- data LHSResult = LHSResult {
- lhsParameters :: Nat
- lhsVarTele :: Telescope
- lhsPatterns :: [NamedArg DeBruijnPattern]
- lhsHasAbsurd :: Bool
- lhsBodyType :: Arg Type
- lhsPatSubst :: Substitution
- lhsAsBindings :: [AsBinding]
- lhsPartialSplit :: IntSet
- lhsIndexedSplit :: Bool
- bindAsPatterns :: [AsBinding] -> TCM a -> TCM a
- class IsFlexiblePattern a where
- maybeFlexiblePattern :: forall (m :: Type -> Type). (HasConstInfo m, MonadDebug m) => a -> MaybeT m FlexibleVarKind
- isFlexiblePattern :: (HasConstInfo m, MonadDebug m) => a -> m Bool
- type DataOrRecord = DataOrRecord' InductionAndEta
- checkSortOfSplitVar :: (MonadTCM m, PureTCM m, MonadError TCErr m, LensSort a, PrettyTCM a, LensSort ty, PrettyTCM ty) => DataOrRecord -> a -> Telescope -> Maybe ty -> m ()
Documentation
:: Call | Trace, e.g. |
-> Range |
|
-> Maybe QName | The name of the definition we are checking. |
-> [NamedArg Pattern] | The patterns. |
-> Type | The expected type |
-> Maybe Substitution | Module parameter substitution from with-abstraction. |
-> [ProblemEq] | Patterns that have been stripped away by with-desugaring. ^ These should not contain any proper matches. |
-> (LHSResult -> TCM a) | Continuation. |
-> TCM a |
Check a LHS. Main function.
checkLeftHandSide a ps a ret
checks that user patterns ps
eliminate
the type a
of the defined function, and calls continuation ret
if successful.
Result of checking the LHS of a clause.
LHSResult | |
|
Instances
InstantiateFull LHSResult Source # | |
Defined in Agda.TypeChecking.Rules.LHS |
class IsFlexiblePattern a where Source #
A pattern is flexible if it is dotted or implicit, or a record pattern with only flexible subpatterns.
maybeFlexiblePattern :: forall (m :: Type -> Type). (HasConstInfo m, MonadDebug m) => a -> MaybeT m FlexibleVarKind Source #
isFlexiblePattern :: (HasConstInfo m, MonadDebug m) => a -> m Bool Source #