Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type CaseContext = Maybe ExtLamInfo
- parseVariables :: QName -> Context -> [AsBinding] -> InteractionId -> Range -> [String] -> TCM [(Int, NameInScope)]
- type ClauseZipper = ([Clause], Clause, [Clause])
- getClauseZipperForIP :: QName -> Int -> TCM (CaseContext, ClauseZipper)
- recheckAbstractClause :: Type -> Maybe Substitution -> SpineClause -> TCM (Clause, Context, [AsBinding])
- makeCase :: InteractionId -> Range -> String -> TCM (QName, CaseContext, [Clause])
- makePatternVarsVisible :: [Nat] -> SplitClause -> SplitClause
- makeRHSEmptyRecord :: RHS -> RHS
- makeAbsurdClause :: QName -> ExpandedEllipsis -> SplitClause -> TCM Clause
- makeAbstractClause :: QName -> RHS -> ExpandedEllipsis -> SplitClause -> TCM Clause
- anyEllipsisVar :: QName -> SpineClause -> [Name] -> TCM Bool
Documentation
type CaseContext = Maybe ExtLamInfo Source #
:: QName | The function name. |
-> Context | The context of the RHS of the clause we are splitting. |
-> [AsBinding] | The as-bindings of the clause we are splitting |
-> InteractionId | The hole of this function we are working on. |
-> Range | The range of this hole. |
-> [String] | The words the user entered in this hole (variable names). |
-> TCM [(Int, NameInScope)] | The computed de Bruijn indices of the variables to split on, with information about whether each variable is in scope. |
Parse variables (visible or hidden), returning their de Bruijn indices.
Used in makeCase
.
type ClauseZipper = ([Clause], Clause, [Clause]) Source #
Lookup the clause for an interaction point in the signature. Returns the CaseContext, the previous clauses, the clause itself, and a list of the remaining ones.
getClauseZipperForIP :: QName -> Int -> TCM (CaseContext, ClauseZipper) Source #
recheckAbstractClause :: Type -> Maybe Substitution -> SpineClause -> TCM (Clause, Context, [AsBinding]) Source #
makeCase :: InteractionId -> Range -> String -> TCM (QName, CaseContext, [Clause]) Source #
Entry point for case splitting tactic.
makePatternVarsVisible :: [Nat] -> SplitClause -> SplitClause Source #
Make the given pattern variables visible by marking their origin as
CaseSplit
and pattern origin as PatOSplit
in the SplitClause
.
makeRHSEmptyRecord :: RHS -> RHS Source #
If a copattern split yields no clauses, we must be at an empty record type.
In this case, replace the rhs by record{}
makeAbsurdClause :: QName -> ExpandedEllipsis -> SplitClause -> TCM Clause Source #
Make clause with no rhs (because of absurd match).
makeAbstractClause :: QName -> RHS -> ExpandedEllipsis -> SplitClause -> TCM Clause Source #
Make a clause with a question mark as rhs.
anyEllipsisVar :: QName -> SpineClause -> [Name] -> TCM Bool Source #