idris-1.0: Functional Programming Language with Dependent Types

CopyrightLicense : BSD3
MaintainerThe Idris Community.
Safe HaskellNone
LanguageHaskell98

Idris.Elab.Term

Description

 

Synopsis

Documentation

data ElabMode #

Instances

data ElabResult #

Constructors

ElabResult 

Fields

build :: IState -> ElabInfo -> ElabMode -> FnOpts -> Name -> PTerm -> ElabD ElabResult #

Using the elaborator, convert a term in raw syntax to a fully elaborated, typechecked term.

If building a pattern match, we convert undeclared variables from holes to pattern bindings.

Also find deferred names in the term and their types

buildTC :: IState -> ElabInfo -> ElabMode -> FnOpts -> Name -> [Name] -> PTerm -> ElabD ElabResult #

Build a term autogenerated as an interface method definition.

(Separate, so we don't go overboard resolving things that we don't know about yet on the LHS of a pattern def)

getUnmatchable :: Context -> Name -> [Bool] #

return whether arguments of the given constructor name can be matched on. If they're polymorphic, no, unless the type has beed made concrete by the time we get around to elaborating the argument.

data ElabCtxt #

Constructors

ElabCtxt 

Fields

elab :: IState -> ElabInfo -> ElabMode -> FnOpts -> Name -> PTerm -> ElabD () #

Returns the set of declarations we need to add to complete the definition (most likely case blocks to elaborate) as well as declarations resulting from user tactic scripts (%runElab)

pruneAlt :: [PTerm] -> [PTerm] #

findHighlight :: Name -> ElabD OutputAnnotation #

Use the local elab context to work out the highlighting for a name

solveAuto :: IState -> Name -> Bool -> (Name, [FailContext]) -> ElabD () #

solveAutos :: IState -> Name -> Bool -> ElabD () #

trivialHoles' :: [Name] -> [(Name, Int)] -> IState -> ElabD () #

proofSearch' :: IState -> Bool -> Bool -> Int -> Bool -> Maybe Name -> Name -> [Name] -> [Name] -> StateT (ElabState EState) TC () #

resolveTC' :: Bool -> Bool -> Int -> Term -> Name -> IState -> ElabD () #

case_ :: Bool -> Bool -> IState -> Name -> PTerm -> ElabD () #

metavarName :: [String] -> Name -> Name #

Compute the appropriate name for a top-level metavariable

runTac :: Bool -> IState -> Maybe FC -> Name -> PTactic -> ElabD () #

processTacticDecls :: ElabInfo -> [RDeclInstructions] -> Idris () #

Do the left-over work after creating declarations in reflected elaborator scripts