Safe Haskell | None |
---|---|
Language | Haskell2010 |
Functions for inserting implicit arguments at the right places.
- implicitArgs :: Int -> (Hiding -> Bool) -> Type -> TCM (Args, Type)
- implicitNamedArgs :: Int -> (Hiding -> ArgName -> Bool) -> Type -> TCM (NamedArgs, Type)
- newMetaArg :: ArgInfo -> ArgName -> Type -> TCM (MetaId, Term)
- newInteractionMetaArg :: ArgInfo -> ArgName -> Type -> TCM (MetaId, Term)
- data ImplicitInsertion
- impInsert :: [Hiding] -> ImplicitInsertion
- insertImplicit :: NamedArg e -> [Arg ArgName] -> ImplicitInsertion
Documentation
implicitArgs :: Int -> (Hiding -> Bool) -> Type -> TCM (Args, Type) Source #
implicitArgs n expand eti t
generates up to n
implicit arguments
metas (unbounded if n<0
), as long as t
is a function type
and expand
holds on the hiding info of its domain.
If explicit arguments are to be inserted as well, they are inserted as instance arguments (used for recursive instance search).
implicitNamedArgs :: Int -> (Hiding -> ArgName -> Bool) -> Type -> TCM (NamedArgs, Type) Source #
implicitNamedArgs n expand eti t
generates up to n
named implicit arguments
metas (unbounded if n<0
), as long as t
is a function type
and expand
holds on the hiding and name info of its domain.
If explicit arguments are to be inserted as well, they are inserted as instance arguments (used for recursive instance search).
:: ArgInfo | Kind/relevance of meta. |
-> ArgName | Name suggestion for meta. |
-> Type | Type of meta. |
-> TCM (MetaId, Term) | The created meta as id and as term. |
Create a metavariable according to the Hiding
info.
newInteractionMetaArg Source #
:: ArgInfo | Kind/relevance of meta. |
-> ArgName | Name suggestion for meta. |
-> Type | Type of meta. |
-> TCM (MetaId, Term) | The created meta as id and as term. |
Create a questionmark according to the Hiding
info.
data ImplicitInsertion Source #
ImpInsert [Hiding] | this many implicits have to be inserted |
BadImplicits | hidden argument where there should have been a non-hidden arg |
NoSuchName ArgName | bad named argument |
NoInsertNeeded |
impInsert :: [Hiding] -> ImplicitInsertion Source #
insertImplicit :: NamedArg e -> [Arg ArgName] -> ImplicitInsertion Source #
The list should be non-empty.