idris-1.0: Functional Programming Language with Dependent Types

Copyright | License : BSD3
Maintainer | The Idris Community.
Safe Haskell | None
Language | Haskell98

Idris.Core.TT

Description

TT is the core language of Idris. The language has:

- Full dependent types
- A hierarchy of universes, with cumulativity: Type : Type1, Type1 : Type2, ...
- Pattern matching letrec binding
- (primitive types defined externally)

Some technical stuff:

- Typechecker is kept as simple as possible - no unification, just a checker for incomplete terms.
- We have a simple collection of tactics which we use to elaborate source programs with implicit syntax into fully explicit terms.

Synopsis

- data AppStatus n
  - = Complete
  - | MaybeHoles
  - | Holes [n]
- data ArithTy
  - = ATInt IntTy
  - | ATFloat
- data Binder b
  - = Lam {
    - binderCount :: RigCount
    - binderTy :: !b
    }
  - | Pi {
    - binderCount :: RigCount
    - binderImpl :: Maybe ImplicitInfo
    - binderTy :: !b
    - binderKind :: !b
    }
  - | Let {
    - binderTy :: !b
    - binderVal :: b
    }
  - | NLet {
    - binderTy :: !b
    - binderVal :: b
    }
  - | Hole {
    - binderTy :: !b
    }
  - | GHole {
    - envlen :: Int
    - localnames :: [Name]
    - binderTy :: !b
    }
  - | Guess {
    - binderTy :: !b
    - binderVal :: b
    }
  - | PVar {
    - binderCount :: RigCount
    - binderTy :: !b
    }
  - | PVTy {
    - binderTy :: !b
    }
- data Const
  - = I Int
  - | BI Integer
  - | Fl Double
  - | Ch Char
  - | Str String
  - | B8 Word8
  - | B16 Word16
  - | B32 Word32
  - | B64 Word64
  - | AType ArithTy
  - | StrType
  - | WorldType
  - | TheWorld
  - | VoidType
  - | Forgot
- type Ctxt a = Map Name (Map Name a)
- data ConstraintFC = ConstraintFC {
  - uconstraint :: UConstraint
  - ufc :: FC
  }
- data DataOpt
  - = Codata
  - | DefaultEliminator
  - | DefaultCaseFun
  - | DataErrRev
- type DataOpts = [DataOpt]
- data Datatype n = Data {
  - d_typename :: n
  - d_typetag :: Int
  - d_type :: TT n
  - d_unique :: Bool
  - d_cons :: [(n, TT n)]
  }
- type Env = EnvTT Name
- type EnvTT n = [(n, RigCount, Binder (TT n))]
- type Err = Err' Term
- data Err' t
  - = Msg String
  - | InternalMsg String
  - | CantUnify Bool (t, Maybe Provenance) (t, Maybe Provenance) (Err' t) [(Name, t)] Int
  - | InfiniteUnify Name t [(Name, t)]
  - | CantConvert t t [(Name, t)]
  - | CantSolveGoal t [(Name, t)]
  - | UnifyScope Name Name t [(Name, t)]
  - | CantInferType String
  - | NonFunctionType t t
  - | NotEquality t t
  - | TooManyArguments Name
  - | CantIntroduce t
  - | NoSuchVariable Name
  - | WithFnType t
  - | NoTypeDecl Name
  - | NotInjective t t t
  - | CantResolve Bool t (Err' t)
  - | InvalidTCArg Name t
  - | CantResolveAlts [Name]
  - | NoValidAlts [Name]
  - | IncompleteTerm t
  - | NoEliminator String t
  - | UniverseError FC UExp (Int, Int) (Int, Int) [ConstraintFC]
  - | UniqueError Universe Name
  - | UniqueKindError Universe Name
  - | ProgramLineComment
  - | Inaccessible Name
  - | UnknownImplicit Name Name
  - | CantMatch t
  - | NonCollapsiblePostulate Name
  - | AlreadyDefined Name
  - | ProofSearchFail (Err' t)
  - | NoRewriting t t t
  - | At FC (Err' t)
  - | Elaborating String Name (Maybe t) (Err' t)
  - | ElaboratingArg Name Name [(Name, Name)] (Err' t)
  - | ProviderError String
  - | LoadingFailed String (Err' t)
  - | ReflectionError [[ErrorReportPart]] (Err' t)
  - | ReflectionFailed String (Err' t)
  - | ElabScriptDebug [ErrorReportPart] t [(Name, t, [(Name, Binder t)])]
  - | ElabScriptStuck t
  - | RunningElabScript (Err' t)
  - | ElabScriptStaging Name
  - | FancyMsg [ErrorReportPart]
- data ErrorReportPart
  - = TextPart String
  - | NamePart Name
  - | TermPart Term
  - | RawPart Raw
  - | SubReport [ErrorReportPart]
- data FC
  - = FC {
    - _fc_fname :: String
    - _fc_start :: (Int, Int)
    - _fc_end :: (Int, Int)
    }
  - | NoFC
  - | FileFC {
    - _fc_fname :: String
    }
- newtype FC' = FC' {
  - unwrapFC :: FC
  }
- data ImplicitInfo = Impl {
  - tcimplementation :: Bool
  - toplevel_imp :: Bool
  - machine_gen :: Bool
  }
- data IntTy
  - = ITFixed NativeTy
  - | ITNative
  - | ITBig
  - | ITChar
- data Name
  - = UN !Text
  - | NS !Name [Text]
  - | MN !Int !Text
  - | SN !SpecialName
  - | SymRef Int
- data NameOutput
  - = TypeOutput
  - | FunOutput
  - | DataOutput
  - | MetavarOutput
  - | PostulateOutput
- data NameType
  - = Bound
  - | Ref
  - | DCon {
    - nt_tag :: Int
    - nt_arity :: Int
    - nt_unique :: Bool
    }
  - | TCon {
    - nt_tag :: Int
    - nt_arity :: Int
    }
- data NativeTy
  - = IT8
  - | IT16
  - | IT32
  - | IT64
- data OutputAnnotation
  - = AnnName Name (Maybe NameOutput) (Maybe String) (Maybe String)
  - | AnnBoundName Name Bool
  - | AnnConst Const
  - | AnnData String String
  - | AnnType String String
  - | AnnKeyword
  - | AnnFC FC
  - | AnnTextFmt TextFormatting
  - | AnnLink String
  - | AnnTerm [(Name, Bool)] (TT Name)
  - | AnnSearchResult Ordering
  - | AnnErr Err
  - | AnnNamespace [Text] (Maybe FilePath)
  - | AnnQuasiquote
  - | AnnAntiquote
- data Provenance
  - = ExpectedType
  - | TooManyArgs Term
  - | InferredVal
  - | GivenVal
  - | SourceTerm Term
- data Raw
  - = Var Name
  - | RBind Name (Binder Raw) Raw
  - | RApp Raw Raw
  - | RType
  - | RUType Universe
  - | RConstant Const
- data RigCount
  - = Rig0
  - | Rig1
  - | RigW
- data SpecialName
  - = WhereN !Int !Name !Name
  - | WithN !Int !Name
  - | ImplementationN !Name [Text]
  - | ParentN !Name !Text
  - | MethodN !Name
  - | CaseN !FC' !Name
  - | ElimN !Name
  - | ImplementationCtorN !Name
  - | MetaN !Name !Name
- data TC a
  - = OK !a
  - | Error Err
- type Term = TT Name
- class TermSize a where
- data TextFormatting
  - = BoldText
  - | ItalicText
  - | UnderlineText
- data TT n
  - = P NameType n (TT n)
  - | V !Int
  - | Bind n !(Binder (TT n)) (TT n)
  - | App (AppStatus n) !(TT n) (TT n)
  - | Constant Const
  - | Proj (TT n) !Int
  - | Erased
  - | Impossible
  - | Inferred (TT n)
  - | TType UExp
  - | UType Universe
- type Type = Term
- data TypeInfo = TI {
  - con_names :: [Name]
  - codata :: Bool
  - data_opts :: DataOpts
  - param_pos :: [Int]
  - mutual_types :: [Name]
  - linear_con :: Bool
  }
- data UConstraint
  - = ULT UExp UExp
  - | ULE UExp UExp
- type UCs = (Int, [UConstraint])
- data UExp
  - = UVar String Int
  - | UVal Int
- data Universe
  - = NullType
  - | UniqueType
  - | AllTypes
- addAlist :: [(Name, a)] -> Ctxt a -> Ctxt a
- addBinder :: TT n -> TT n
- addDef :: Name -> a -> Ctxt a -> Ctxt a
- allTTNames :: Eq n => TT n -> [n]
- arity :: TT n -> Int
- bindAll :: [(n, Binder (TT n))] -> TT n -> TT n
- bindingOf :: Name -> Bool -> Doc OutputAnnotation
- bindTyArgs :: (TT n -> Binder (TT n)) -> [(n, TT n)] -> TT n -> TT n
- caseName :: Name -> Bool
- constDocs :: Const -> String
- constIsType :: Const -> Bool
- deleteDefExact :: Name -> Ctxt a -> Ctxt a
- discard :: Monad m => m a -> m ()
- emptyContext :: Map k a
- emptyFC :: FC
- explicitNames :: TT n -> TT n
- fc_end :: FC -> (Int, Int)
- fc_fname :: FC -> String
- fc_start :: FC -> (Int, Int)
- fcIn :: FC -> FC -> Bool
- fileFC :: String -> FC
- finalise :: Eq n => TT n -> TT n
- fmapMB :: Monad m => (a -> m b) -> Binder a -> m (Binder b)
- forget :: TT Name -> Raw
- forgetEnv :: [Name] -> TT Name -> Raw
- freeNames :: Eq n => TT n -> [n]
- getArgTys :: TT n -> [(n, TT n)]
- getRetTy :: TT n -> TT n
- substRetTy :: TT n -> TT n
- implicitable :: Name -> Bool
- instantiate :: TT n -> TT n -> TT n
- internalNS :: String
- intTyName :: IntTy -> String
- isInjective :: TT n -> Bool
- isTypeConst :: Const -> Bool
- lookupCtxt :: Name -> Ctxt a -> [a]
- lookupCtxtExact :: Name -> Ctxt a -> Maybe a
- lookupCtxtName :: Name -> Ctxt a -> [(Name, a)]
- mapCtxt :: (a -> b) -> Ctxt a -> Ctxt b
- mkApp :: TT n -> [TT n] -> TT n
- nativeTyWidth :: NativeTy -> Int
- nextName :: Name -> Name
- noOccurrence :: Eq n => n -> TT n -> Bool
- nsroot :: Name -> Name
- occurrences :: Eq n => n -> TT n -> Int
- pEraseType :: TT n -> TT n
- pmap :: (t1 -> t) -> (t1, t1) -> (t, t)
- pprintRaw :: [Name] -> Raw -> Doc OutputAnnotation
- pprintTT :: [Name] -> TT Name -> Doc OutputAnnotation
- pprintTTClause :: [(Name, Type)] -> Term -> Term -> Doc OutputAnnotation
- prettyEnv :: Env -> Term -> Doc OutputAnnotation
- psubst :: Eq n => n -> TT n -> TT n -> TT n
- pToV :: Eq n => n -> TT n -> TT n
- pToVs :: Eq n => [n] -> TT n -> TT n
- pureTerm :: TT Name -> Bool
- raw_apply :: Raw -> [Raw] -> Raw
- raw_unapply :: Raw -> (Raw, [Raw])
- refsIn :: TT Name -> [Name]
- safeForget :: TT Name -> Maybe Raw
- safeForgetEnv :: [Name] -> TT Name -> Maybe Raw
- showCG :: Name -> String
- showEnv :: (Eq n, Show n) => EnvTT n -> TT n -> String
- showEnvDbg :: (Show a, Eq a) => [(a, RigCount, Binder (TT a))] -> TT a -> [Char]
- showSep :: String -> [String] -> String
- sImplementationN :: Name -> [String] -> SpecialName
- sMN :: Int -> String -> Name
- sNS :: Name -> [String] -> Name
- spanFC :: FC -> FC -> FC
- str :: Text -> String
- subst :: Eq n => n -> TT n -> TT n -> TT n
- substNames :: Eq n => [(n, TT n)] -> TT n -> TT n
- substTerm :: Eq n => TT n -> TT n -> TT n -> TT n
- substV :: TT n -> TT n -> TT n
- sUN :: String -> Name
- tcname :: Name -> Bool
- termSmallerThan :: Int -> Term -> Bool
- tfail :: Err -> TC a
- thead :: Text -> Char
- tnull :: Text -> Bool
- toAlist :: Ctxt a -> [(Name, a)]
- traceWhen :: Bool -> String -> t -> t
- txt :: String -> Text
- unApply :: TT n -> (TT n, [TT n])
- uniqueBinders :: [Name] -> TT Name -> TT Name
- uniqueName :: Name -> [Name] -> Name
- uniqueNameFrom :: [Name] -> [Name] -> Name
- uniqueNameSet :: Name -> Set Name -> Name
- unList :: Term -> Maybe [Term]
- updateDef :: Name -> (a -> a) -> Ctxt a -> Ctxt a
- vToP :: TT n -> TT n
- weakenTm :: Int -> TT n -> TT n
- rigPlus :: RigCount -> RigCount -> RigCount
- rigMult :: RigCount -> RigCount -> RigCount
- fstEnv :: (t2, t1, t) -> t2
- rigEnv :: (t1, t2, t) -> t2
- sndEnv :: (t1, t, t2) -> t2
- lookupBinder :: Eq n => n -> EnvTT n -> Maybe (Binder (TT n))
- envBinders :: [(t2, t, t1)] -> [(t2, t1)]
- envZero :: [(t2, t, t1)] -> [(t2, RigCount, t1)]

# Documentation

data AppStatus n #

Constructors

Complete |
MaybeHoles |
Holes [n] |

Instances

Functor AppStatus # |
Methods fmap :: (a -> b) -> AppStatus a -> AppStatus b # (<$) :: a -> AppStatus b -> AppStatus a #
Eq n => Eq (AppStatus n) # |
Methods (==) :: AppStatus n -> AppStatus n -> Bool # (/=) :: AppStatus n -> AppStatus n -> Bool #
Data n => Data (AppStatus n) # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AppStatus n -> c (AppStatus n) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (AppStatus n) # toConstr :: AppStatus n -> Constr # dataTypeOf :: AppStatus n -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (AppStatus n)) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (AppStatus n)) # gmapT :: (forall b. Data b => b -> b) -> AppStatus n -> AppStatus n # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AppStatus n -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AppStatus n -> r # gmapQ :: (forall d. Data d => d -> u) -> AppStatus n -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> AppStatus n -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> AppStatus n -> m (AppStatus n) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AppStatus n -> m (AppStatus n) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AppStatus n -> m (AppStatus n) #
Ord n => Ord (AppStatus n) # |
Methods compare :: AppStatus n -> AppStatus n -> Ordering # (<) :: AppStatus n -> AppStatus n -> Bool # (<=) :: AppStatus n -> AppStatus n -> Bool # (>) :: AppStatus n -> AppStatus n -> Bool # (>=) :: AppStatus n -> AppStatus n -> Bool # max :: AppStatus n -> AppStatus n -> AppStatus n # min :: AppStatus n -> AppStatus n -> AppStatus n #
Show n => Show (AppStatus n) # |
Methods showsPrec :: Int -> AppStatus n -> ShowS # show :: AppStatus n -> String # showList :: [AppStatus n] -> ShowS #
Generic (AppStatus n) # |
Associated Types type Rep (AppStatus n) :: * -> * # Methods from :: AppStatus n -> Rep (AppStatus n) x # to :: Rep (AppStatus n) x -> AppStatus n #
type Rep (AppStatus n) # |
type Rep (AppStatus n) = D1 (MetaData "AppStatus" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "Complete" PrefixI False) U1) ((:+:) (C1 (MetaCons "MaybeHoles" PrefixI False) U1) (C1 (MetaCons "Holes" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [n])))))

data ArithTy #

Constructors

ATInt IntTy |
ATFloat |

Instances

Eq ArithTy # |
Methods (==) :: ArithTy -> ArithTy -> Bool # (/=) :: ArithTy -> ArithTy -> Bool #
Data ArithTy # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ArithTy -> c ArithTy # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ArithTy # toConstr :: ArithTy -> Constr # dataTypeOf :: ArithTy -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ArithTy) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ArithTy) # gmapT :: (forall b. Data b => b -> b) -> ArithTy -> ArithTy # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ArithTy -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ArithTy -> r # gmapQ :: (forall d. Data d => d -> u) -> ArithTy -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ArithTy -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ArithTy -> m ArithTy # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ArithTy -> m ArithTy # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ArithTy -> m ArithTy #
Ord ArithTy # |
Methods compare :: ArithTy -> ArithTy -> Ordering # (<) :: ArithTy -> ArithTy -> Bool # (<=) :: ArithTy -> ArithTy -> Bool # (>) :: ArithTy -> ArithTy -> Bool # (>=) :: ArithTy -> ArithTy -> Bool # max :: ArithTy -> ArithTy -> ArithTy # min :: ArithTy -> ArithTy -> ArithTy #
Show ArithTy # |
Methods showsPrec :: Int -> ArithTy -> ShowS # show :: ArithTy -> String # showList :: [ArithTy] -> ShowS #
Generic ArithTy # |
Associated Types type Rep ArithTy :: * -> * # Methods from :: ArithTy -> Rep ArithTy x # to :: Rep ArithTy x -> ArithTy #
type Rep ArithTy # |
type Rep ArithTy = D1 (MetaData "ArithTy" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "ATInt" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 IntTy))) (C1 (MetaCons "ATFloat" PrefixI False) U1))

data Binder b #

All binding forms are represented in a uniform fashion. This type only represents the types of bindings (and their values, if any); the attached identifiers are part of the `Bind` constructor for the `TT` type.

Constructors

Lam | A function binding
Fields binderCount :: RigCount binderTy :: !b type annotation for bound variable
Pi | A binding that occurs in a function type expression, e.g. `(x:Int) -> ...` The `binderImpl` flag says whether it was a scoped implicit (i.e. forall bound) in the high level Idris, but otherwise has no relevance in TT.
Fields binderCount :: RigCount binderImpl :: Maybe ImplicitInfo binderTy :: !b type annotation for bound variable binderKind :: !b
Let | A binding that occurs in a `let` expression
Fields binderTy :: !b type annotation for bound variable binderVal :: b value for bound variable
NLet | NLet is an intermediate product in the evaluator that's used for temporarily naming locals during reduction. It won't occur outside the evaluator.
Fields binderTy :: !b type annotation for bound variable binderVal :: b value for bound variable
Hole | A hole in a term under construction in the elaborator. If this is not filled during elaboration, it is an error.
Fields binderTy :: !b type annotation for bound variable
GHole | A saved TT hole that will later be converted to a top-level Idris metavariable applied to all elements of its local environment.
Fields envlen :: Int localnames :: [Name] binderTy :: !b type annotation for bound variable
Guess | A provided value for a hole. It will later be substituted - the guess is to keep it computationally inert while working on other things if necessary.
Fields binderTy :: !b type annotation for bound variable binderVal :: b value for bound variable
PVar | A pattern variable (these are bound around terms that make up pattern-match clauses)
Fields binderCount :: RigCount binderTy :: !b type annotation for bound variable
PVTy | The type of a pattern binding
Fields binderTy :: !b type annotation for bound variable

Instances

Functor Binder # |
Methods fmap :: (a -> b) -> Binder a -> Binder b # (<$) :: a -> Binder b -> Binder a #
Foldable Binder # |
Methods fold :: Monoid m => Binder m -> m # foldMap :: Monoid m => (a -> m) -> Binder a -> m # foldr :: (a -> b -> b) -> b -> Binder a -> b # foldr' :: (a -> b -> b) -> b -> Binder a -> b # foldl :: (b -> a -> b) -> b -> Binder a -> b # foldl' :: (b -> a -> b) -> b -> Binder a -> b # foldr1 :: (a -> a -> a) -> Binder a -> a # foldl1 :: (a -> a -> a) -> Binder a -> a # toList :: Binder a -> [a] # null :: Binder a -> Bool # length :: Binder a -> Int # elem :: Eq a => a -> Binder a -> Bool # maximum :: Ord a => Binder a -> a # minimum :: Ord a => Binder a -> a # sum :: Num a => Binder a -> a # product :: Num a => Binder a -> a #
Traversable Binder # |
Methods traverse :: Applicative f => (a -> f b) -> Binder a -> f (Binder b) # sequenceA :: Applicative f => Binder (f a) -> f (Binder a) # mapM :: Monad m => (a -> m b) -> Binder a -> m (Binder b) # sequence :: Monad m => Binder (m a) -> m (Binder a) #
Eq b => Eq (Binder b) # |
Methods (==) :: Binder b -> Binder b -> Bool # (/=) :: Binder b -> Binder b -> Bool #
Data b => Data (Binder b) # |
Methods gfoldl :: (forall d a. Data d => c (d -> a) -> d -> c a) -> (forall g. g -> c g) -> Binder b -> c (Binder b) # gunfold :: (forall a r. Data a => c (a -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Binder b) # toConstr :: Binder b -> Constr # dataTypeOf :: Binder b -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Binder b)) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Binder b)) # gmapT :: (forall a. Data a => a -> a) -> Binder b -> Binder b # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Binder b -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Binder b -> r # gmapQ :: (forall d. Data d => d -> u) -> Binder b -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Binder b -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Binder b -> m (Binder b) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Binder b -> m (Binder b) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Binder b -> m (Binder b) #
Ord b => Ord (Binder b) # |
Methods compare :: Binder b -> Binder b -> Ordering # (<) :: Binder b -> Binder b -> Bool # (<=) :: Binder b -> Binder b -> Bool # (>) :: Binder b -> Binder b -> Bool # (>=) :: Binder b -> Binder b -> Bool # max :: Binder b -> Binder b -> Binder b # min :: Binder b -> Binder b -> Binder b #
Show b => Show (Binder b) # |
Methods showsPrec :: Int -> Binder b -> ShowS # show :: Binder b -> String # showList :: [Binder b] -> ShowS #
Generic (Binder b) # |
Associated Types type Rep (Binder b) :: * -> * # Methods from :: Binder b -> Rep (Binder b) x # to :: Rep (Binder b) x -> Binder b #
type Rep (Binder b) # |
type Rep (Binder b) = D1 (MetaData "Binder" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Lam" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "binderCount") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 RigCount)) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)))) (C1 (MetaCons "Pi" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "binderCount") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 RigCount)) (S1 (MetaSel (Just Symbol "binderImpl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe ImplicitInfo)))) ((:*:) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) (S1 (MetaSel (Just Symbol "binderKind") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)))))) ((:+:) (C1 (MetaCons "Let" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) (S1 (MetaSel (Just Symbol "binderVal") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 b)))) (C1 (MetaCons "NLet" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) (S1 (MetaSel (Just Symbol "binderVal") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 b)))))) ((:+:) ((:+:) (C1 (MetaCons "Hole" PrefixI True) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b))) (C1 (MetaCons "GHole" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "envlen") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) ((:*:) (S1 (MetaSel (Just Symbol "localnames") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Name])) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)))))) ((:+:) (C1 (MetaCons "Guess" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) (S1 (MetaSel (Just Symbol "binderVal") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 b)))) ((:+:) (C1 (MetaCons "PVar" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "binderCount") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 RigCount)) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)))) (C1 (MetaCons "PVTy" PrefixI True) (S1 (MetaSel (Just Symbol "binderTy") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)))))))

data Const #

Constructors

I Int |
BI Integer |
Fl Double |
Ch Char |
Str String |
B8 Word8 |
B16 Word16 |
B32 Word32 |
B64 Word64 |
AType ArithTy |
StrType |
WorldType |
TheWorld |
VoidType |
Forgot |

Instances

Eq Const # |
Methods (==) :: Const -> Const -> Bool # (/=) :: Const -> Const -> Bool #
Data Const # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Const -> c Const # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Const # toConstr :: Const -> Constr # dataTypeOf :: Const -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Const) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Const) # gmapT :: (forall b. Data b => b -> b) -> Const -> Const # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r # gmapQ :: (forall d. Data d => d -> u) -> Const -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Const -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Const -> m Const # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Const -> m Const # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Const -> m Const #
Ord Const # |
Methods compare :: Const -> Const -> Ordering # (<) :: Const -> Const -> Bool # (<=) :: Const -> Const -> Bool # (>) :: Const -> Const -> Bool # (>=) :: Const -> Const -> Bool # max :: Const -> Const -> Const # min :: Const -> Const -> Const #
Show Const # |
Methods showsPrec :: Int -> Const -> ShowS # show :: Const -> String # showList :: [Const] -> ShowS #
Generic Const # |
Associated Types type Rep Const :: * -> * # Methods from :: Const -> Rep Const x # to :: Rep Const x -> Const #
type Rep Const # |
type Rep Const = D1 (MetaData "Const" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "I" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))) ((:+:) (C1 (MetaCons "BI" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Integer))) (C1 (MetaCons "Fl" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double))))) ((:+:) ((:+:) (C1 (MetaCons "Ch" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Char))) (C1 (MetaCons "Str" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))) ((:+:) (C1 (MetaCons "B8" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Word8))) (C1 (MetaCons "B16" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Word16)))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "B32" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Word32))) (C1 (MetaCons "B64" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Word64)))) ((:+:) (C1 (MetaCons "AType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ArithTy))) (C1 (MetaCons "StrType" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "WorldType" PrefixI False) U1) (C1 (MetaCons "TheWorld" PrefixI False) U1)) ((:+:) (C1 (MetaCons "VoidType" PrefixI False) U1) (C1 (MetaCons "Forgot" PrefixI False) U1)))))

type Ctxt a = Map Name (Map Name a) #

Contexts allow us to map names to things. A root name maps to a collection of things in different namespaces with that name.

data ConstraintFC #

Constructors

ConstraintFC |
Fields uconstraint :: UConstraint ufc :: FC

Instances

Eq ConstraintFC # |
Methods (==) :: ConstraintFC -> ConstraintFC -> Bool # (/=) :: ConstraintFC -> ConstraintFC -> Bool #
Data ConstraintFC # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ConstraintFC -> c ConstraintFC # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ConstraintFC # toConstr :: ConstraintFC -> Constr # dataTypeOf :: ConstraintFC -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ConstraintFC) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ConstraintFC) # gmapT :: (forall b. Data b => b -> b) -> ConstraintFC -> ConstraintFC # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ConstraintFC -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ConstraintFC -> r # gmapQ :: (forall d. Data d => d -> u) -> ConstraintFC -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ConstraintFC -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ConstraintFC -> m ConstraintFC # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ConstraintFC -> m ConstraintFC # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ConstraintFC -> m ConstraintFC #
Ord ConstraintFC # |
Methods compare :: ConstraintFC -> ConstraintFC -> Ordering # (<) :: ConstraintFC -> ConstraintFC -> Bool # (<=) :: ConstraintFC -> ConstraintFC -> Bool # (>) :: ConstraintFC -> ConstraintFC -> Bool # (>=) :: ConstraintFC -> ConstraintFC -> Bool # max :: ConstraintFC -> ConstraintFC -> ConstraintFC # min :: ConstraintFC -> ConstraintFC -> ConstraintFC #
Show ConstraintFC # |
Methods showsPrec :: Int -> ConstraintFC -> ShowS # show :: ConstraintFC -> String # showList :: [ConstraintFC] -> ShowS #
Generic ConstraintFC # |
Associated Types type Rep ConstraintFC :: * -> * # Methods from :: ConstraintFC -> Rep ConstraintFC x # to :: Rep ConstraintFC x -> ConstraintFC #
type Rep ConstraintFC # |
type Rep ConstraintFC = D1 (MetaData "ConstraintFC" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) (C1 (MetaCons "ConstraintFC" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "uconstraint") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UConstraint)) (S1 (MetaSel (Just Symbol "ufc") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FC))))

data DataOpt #

Data declaration options

Constructors

Codata | Set if the the data-type is coinductive
DefaultEliminator | Set if an eliminator should be generated for data type
DefaultCaseFun | Set if a case function should be generated for data type
DataErrRev |

Instances

Eq DataOpt # |
Methods (==) :: DataOpt -> DataOpt -> Bool # (/=) :: DataOpt -> DataOpt -> Bool #
Show DataOpt # |
Methods showsPrec :: Int -> DataOpt -> ShowS # show :: DataOpt -> String # showList :: [DataOpt] -> ShowS #
Generic DataOpt # |
Associated Types type Rep DataOpt :: * -> * # Methods from :: DataOpt -> Rep DataOpt x # to :: Rep DataOpt x -> DataOpt #
type Rep DataOpt # |
type Rep DataOpt = D1 (MetaData "DataOpt" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "Codata" PrefixI False) U1) (C1 (MetaCons "DefaultEliminator" PrefixI False) U1)) ((:+:) (C1 (MetaCons "DefaultCaseFun" PrefixI False) U1) (C1 (MetaCons "DataErrRev" PrefixI False) U1)))

type DataOpts = [DataOpt] #

data Datatype n #

Constructors

Data |
Fields d_typename :: n d_typetag :: Int d_type :: TT n d_unique :: Bool d_cons :: [(n, TT n)]

Instances

Functor Datatype # |
Methods fmap :: (a -> b) -> Datatype a -> Datatype b # (<$) :: a -> Datatype b -> Datatype a #
Eq n => Eq (Datatype n) # |
Methods (==) :: Datatype n -> Datatype n -> Bool # (/=) :: Datatype n -> Datatype n -> Bool #
(Eq n, Show n) => Show (Datatype n) # |
Methods showsPrec :: Int -> Datatype n -> ShowS # show :: Datatype n -> String # showList :: [Datatype n] -> ShowS #

type Env = EnvTT Name #

type EnvTT n = [(n, RigCount, Binder (TT n))] #

type Err = Err' Term #

data Err' t #

Idris errors. Used as exceptions in the compiler, but reported to users if they reach the top level.

Constructors

Msg String |
InternalMsg String |
CantUnify Bool (t, Maybe Provenance) (t, Maybe Provenance) (Err' t) [(Name, t)] Int |
InfiniteUnify Name t [(Name, t)] |
CantConvert t t [(Name, t)] |
CantSolveGoal t [(Name, t)] |
UnifyScope Name Name t [(Name, t)] |
CantInferType String |
NonFunctionType t t |
NotEquality t t |
TooManyArguments Name |
CantIntroduce t |
NoSuchVariable Name |
WithFnType t |
NoTypeDecl Name |
NotInjective t t t |
CantResolve Bool t (Err' t) |
InvalidTCArg Name t |
CantResolveAlts [Name] |
NoValidAlts [Name] |
IncompleteTerm t |
NoEliminator String t |
UniverseError FC UExp (Int, Int) (Int, Int) [ConstraintFC] | Location, bad universe, old domain, new domain, suspects
UniqueError Universe Name |
UniqueKindError Universe Name |
ProgramLineComment |
Inaccessible Name |
UnknownImplicit Name Name |
CantMatch t |
NonCollapsiblePostulate Name |
AlreadyDefined Name |
ProofSearchFail (Err' t) |
NoRewriting t t t |
At FC (Err' t) |
Elaborating String Name (Maybe t) (Err' t) |
ElaboratingArg Name Name [(Name, Name)] (Err' t) |
ProviderError String |
LoadingFailed String (Err' t) |
ReflectionError [[ErrorReportPart]] (Err' t) |
ReflectionFailed String (Err' t) |
ElabScriptDebug [ErrorReportPart] t [(Name, t, [(Name, Binder t)])] | User-specified message, proof term, goals with context (first goal is focused)
ElabScriptStuck t |
RunningElabScript (Err' t) | The error occurred during a top-level elaboration script
ElabScriptStaging Name |
FancyMsg [ErrorReportPart] |

Instances

Functor Err' # |
Methods fmap :: (a -> b) -> Err' a -> Err' b # (<$) :: a -> Err' b -> Err' a #
Show Err # |
Methods showsPrec :: Int -> Err -> ShowS # show :: Err -> String # showList :: [Err] -> ShowS #
Eq t => Eq (Err' t) # |
Methods (==) :: Err' t -> Err' t -> Bool # (/=) :: Err' t -> Err' t -> Bool #
Data t => Data (Err' t) # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Err' t -> c (Err' t) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Err' t) # toConstr :: Err' t -> Constr # dataTypeOf :: Err' t -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Err' t)) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Err' t)) # gmapT :: (forall b. Data b => b -> b) -> Err' t -> Err' t # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Err' t -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Err' t -> r # gmapQ :: (forall d. Data d => d -> u) -> Err' t -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Err' t -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Err' t -> m (Err' t) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Err' t -> m (Err' t) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Err' t -> m (Err' t) #
Ord t => Ord (Err' t) # |
Methods compare :: Err' t -> Err' t -> Ordering # (<) :: Err' t -> Err' t -> Bool # (<=) :: Err' t -> Err' t -> Bool # (>) :: Err' t -> Err' t -> Bool # (>=) :: Err' t -> Err' t -> Bool # max :: Err' t -> Err' t -> Err' t # min :: Err' t -> Err' t -> Err' t #
Generic (Err' t) # |
Associated Types type Rep (Err' t) :: * -> * # Methods from :: Err' t -> Rep (Err' t) x # to :: Rep (Err' t) x -> Err' t #
type Rep (Err' t) # |
type Rep (Err' t) = D1 (MetaData "Err'" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Msg" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) (C1 (MetaCons "InternalMsg" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))) ((:+:) (C1 (MetaCons "CantUnify" PrefixI False) ((:*:) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (t, Maybe Provenance))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (t, Maybe Provenance))))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, t)])) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))))) ((:+:) (C1 (MetaCons "InfiniteUnify" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, t)]))))) (C1 (MetaCons "CantConvert" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, t)])))))))) ((:+:) ((:+:) (C1 (MetaCons "CantSolveGoal" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, t)])))) ((:+:) (C1 (MetaCons "UnifyScope" PrefixI False) ((:*:) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, t)]))))) (C1 (MetaCons "CantInferType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))))) ((:+:) (C1 (MetaCons "NonFunctionType" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)))) ((:+:) (C1 (MetaCons "NotEquality" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)))) (C1 (MetaCons "TooManyArguments" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "CantIntroduce" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t))) (C1 (MetaCons "NoSuchVariable" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)))) ((:+:) (C1 (MetaCons "WithFnType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t))) ((:+:) (C1 (MetaCons "NoTypeDecl" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))) (C1 (MetaCons "NotInjective" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)))))))) ((:+:) ((:+:) (C1 (MetaCons "CantResolve" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t)))))) ((:+:) (C1 (MetaCons "InvalidTCArg" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)))) (C1 (MetaCons "CantResolveAlts" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Name]))))) ((:+:) (C1 (MetaCons "NoValidAlts" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Name]))) ((:+:) (C1 (MetaCons "IncompleteTerm" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t))) (C1 (MetaCons "NoEliminator" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t))))))))) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "UniverseError" PrefixI False) ((:*:) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FC)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UExp))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Int, Int))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Int, Int))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ConstraintFC])))))) (C1 (MetaCons "UniqueError" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Universe)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))))) ((:+:) (C1 (MetaCons "UniqueKindError" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Universe)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)))) ((:+:) (C1 (MetaCons "ProgramLineComment" PrefixI False) U1) (C1 (MetaCons "Inaccessible" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)))))) ((:+:) ((:+:) (C1 (MetaCons "UnknownImplicit" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)))) ((:+:) (C1 (MetaCons "CantMatch" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t))) (C1 (MetaCons "NonCollapsiblePostulate" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))))) ((:+:) (C1 (MetaCons "AlreadyDefined" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))) ((:+:) (C1 (MetaCons "ProofSearchFail" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t)))) (C1 (MetaCons "NoRewriting" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t))))))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "At" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FC)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t))))) ((:+:) (C1 (MetaCons "Elaborating" PrefixI False) ((:*:) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe t))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t)))))) (C1 (MetaCons "ElaboratingArg" PrefixI False) ((:*:) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, Name)])) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t)))))))) ((:+:) (C1 (MetaCons "ProviderError" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) ((:+:) (C1 (MetaCons "LoadingFailed" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t))))) (C1 (MetaCons "ReflectionError" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [[ErrorReportPart]])) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t)))))))) ((:+:) ((:+:) (C1 (MetaCons "ReflectionFailed" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t))))) ((:+:) (C1 (MetaCons "ElabScriptDebug" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ErrorReportPart])) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, t, [(Name, Binder t)])]))))) (C1 (MetaCons "ElabScriptStuck" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 t))))) ((:+:) (C1 (MetaCons "RunningElabScript" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Err' t)))) ((:+:) (C1 (MetaCons "ElabScriptStaging" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))) (C1 (MetaCons "FancyMsg" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ErrorReportPart])))))))))

data ErrorReportPart #

Used for error reflection

Constructors

TextPart String |
NamePart Name |
TermPart Term |
RawPart Raw |
SubReport [ErrorReportPart] |

Instances

Eq ErrorReportPart # |
Methods (==) :: ErrorReportPart -> ErrorReportPart -> Bool # (/=) :: ErrorReportPart -> ErrorReportPart -> Bool #
Data ErrorReportPart # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ErrorReportPart -> c ErrorReportPart # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ErrorReportPart # toConstr :: ErrorReportPart -> Constr # dataTypeOf :: ErrorReportPart -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ErrorReportPart) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ErrorReportPart) # gmapT :: (forall b. Data b => b -> b) -> ErrorReportPart -> ErrorReportPart # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ErrorReportPart -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ErrorReportPart -> r # gmapQ :: (forall d. Data d => d -> u) -> ErrorReportPart -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ErrorReportPart -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ErrorReportPart -> m ErrorReportPart # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ErrorReportPart -> m ErrorReportPart # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ErrorReportPart -> m ErrorReportPart #
Ord ErrorReportPart # |
Methods compare :: ErrorReportPart -> ErrorReportPart -> Ordering # (<) :: ErrorReportPart -> ErrorReportPart -> Bool # (<=) :: ErrorReportPart -> ErrorReportPart -> Bool # (>) :: ErrorReportPart -> ErrorReportPart -> Bool # (>=) :: ErrorReportPart -> ErrorReportPart -> Bool # max :: ErrorReportPart -> ErrorReportPart -> ErrorReportPart # min :: ErrorReportPart -> ErrorReportPart -> ErrorReportPart #
Show ErrorReportPart # |
Methods showsPrec :: Int -> ErrorReportPart -> ShowS # show :: ErrorReportPart -> String # showList :: [ErrorReportPart] -> ShowS #
Generic ErrorReportPart # |
Associated Types type Rep ErrorReportPart :: * -> * # Methods from :: ErrorReportPart -> Rep ErrorReportPart x # to :: Rep ErrorReportPart x -> ErrorReportPart #
type Rep ErrorReportPart # |
type Rep ErrorReportPart = D1 (MetaData "ErrorReportPart" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "TextPart" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) (C1 (MetaCons "NamePart" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)))) ((:+:) (C1 (MetaCons "TermPart" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Term))) ((:+:) (C1 (MetaCons "RawPart" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Raw))) (C1 (MetaCons "SubReport" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ErrorReportPart]))))))

data FC #

Source location. These are typically produced by the parser `getFC`

Constructors

FC |
Fields _fc_fname :: String Filename _fc_start :: (Int, Int) Line and column numbers for the start of the location span _fc_end :: (Int, Int) Line and column numbers for the end of the location span
NoFC | Locations for machine-generated terms
FileFC | Locations with file only
Fields _fc_fname :: String Filename

Instances

Eq FC # | Ignore source location equality (so deriving classes do not compare FCs)
Methods (==) :: FC -> FC -> Bool # (/=) :: FC -> FC -> Bool #
Data FC # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FC -> c FC # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FC # toConstr :: FC -> Constr # dataTypeOf :: FC -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c FC) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FC) # gmapT :: (forall b. Data b => b -> b) -> FC -> FC # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FC -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FC -> r # gmapQ :: (forall d. Data d => d -> u) -> FC -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FC -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FC -> m FC # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FC -> m FC # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FC -> m FC #
Ord FC # |
Methods compare :: FC -> FC -> Ordering # (<) :: FC -> FC -> Bool # (<=) :: FC -> FC -> Bool # (>) :: FC -> FC -> Bool # (>=) :: FC -> FC -> Bool # max :: FC -> FC -> FC # min :: FC -> FC -> FC #
Show FC # |
Methods showsPrec :: Int -> FC -> ShowS # show :: FC -> String # showList :: [FC] -> ShowS #
Generic FC # |
Associated Types type Rep FC :: * -> * # Methods from :: FC -> Rep FC x # to :: Rep FC x -> FC #
SExpable FC # |
Methods toSExp :: FC -> SExp #
type Rep FC # |
type Rep FC = D1 (MetaData "FC" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "FC" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "_fc_fname") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) ((:*:) (S1 (MetaSel (Just Symbol "_fc_start") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Int, Int))) (S1 (MetaSel (Just Symbol "_fc_end") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Int, Int)))))) ((:+:) (C1 (MetaCons "NoFC" PrefixI False) U1) (C1 (MetaCons "FileFC" PrefixI True) (S1 (MetaSel (Just Symbol "_fc_fname") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))))

newtype FC' #

FC with equality

Constructors

FC' |
Fields unwrapFC :: FC

Instances

Eq FC' # |
Methods (==) :: FC' -> FC' -> Bool # (/=) :: FC' -> FC' -> Bool #
Data FC' # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FC' -> c FC' # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FC' # toConstr :: FC' -> Constr # dataTypeOf :: FC' -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c FC') # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FC') # gmapT :: (forall b. Data b => b -> b) -> FC' -> FC' # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FC' -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FC' -> r # gmapQ :: (forall d. Data d => d -> u) -> FC' -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FC' -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FC' -> m FC' # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FC' -> m FC' # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FC' -> m FC' #
Ord FC' # |
Methods compare :: FC' -> FC' -> Ordering # (<) :: FC' -> FC' -> Bool # (<=) :: FC' -> FC' -> Bool # (>) :: FC' -> FC' -> Bool # (>=) :: FC' -> FC' -> Bool # max :: FC' -> FC' -> FC' # min :: FC' -> FC' -> FC' #
Show FC' # |
Methods showsPrec :: Int -> FC' -> ShowS # show :: FC' -> String # showList :: [FC'] -> ShowS #
Generic FC' # |
Associated Types type Rep FC' :: * -> * # Methods from :: FC' -> Rep FC' x # to :: Rep FC' x -> FC' #
type Rep FC' # |
type Rep FC' = D1 (MetaData "FC'" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" True) (C1 (MetaCons "FC'" PrefixI True) (S1 (MetaSel (Just Symbol "unwrapFC") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FC)))

data ImplicitInfo #

Constructors

Impl |
Fields tcimplementation :: Bool toplevel_imp :: Bool machine_gen :: Bool

Instances

Eq ImplicitInfo # |
Methods (==) :: ImplicitInfo -> ImplicitInfo -> Bool # (/=) :: ImplicitInfo -> ImplicitInfo -> Bool #
Data ImplicitInfo # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImplicitInfo -> c ImplicitInfo # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImplicitInfo # toConstr :: ImplicitInfo -> Constr # dataTypeOf :: ImplicitInfo -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ImplicitInfo) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImplicitInfo) # gmapT :: (forall b. Data b => b -> b) -> ImplicitInfo -> ImplicitInfo # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImplicitInfo -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImplicitInfo -> r # gmapQ :: (forall d. Data d => d -> u) -> ImplicitInfo -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ImplicitInfo -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImplicitInfo -> m ImplicitInfo # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImplicitInfo -> m ImplicitInfo # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImplicitInfo -> m ImplicitInfo #
Ord ImplicitInfo # |
Methods compare :: ImplicitInfo -> ImplicitInfo -> Ordering # (<) :: ImplicitInfo -> ImplicitInfo -> Bool # (<=) :: ImplicitInfo -> ImplicitInfo -> Bool # (>) :: ImplicitInfo -> ImplicitInfo -> Bool # (>=) :: ImplicitInfo -> ImplicitInfo -> Bool # max :: ImplicitInfo -> ImplicitInfo -> ImplicitInfo # min :: ImplicitInfo -> ImplicitInfo -> ImplicitInfo #
Show ImplicitInfo # |
Methods showsPrec :: Int -> ImplicitInfo -> ShowS # show :: ImplicitInfo -> String # showList :: [ImplicitInfo] -> ShowS #
Generic ImplicitInfo # |
Associated Types type Rep ImplicitInfo :: * -> * # Methods from :: ImplicitInfo -> Rep ImplicitInfo x # to :: Rep ImplicitInfo x -> ImplicitInfo #
type Rep ImplicitInfo # |
type Rep ImplicitInfo = D1 (MetaData "ImplicitInfo" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) (C1 (MetaCons "Impl" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "tcimplementation") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) ((:*:) (S1 (MetaSel (Just Symbol "toplevel_imp") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "machine_gen") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))))

data IntTy #

Constructors

ITFixed NativeTy |
ITNative |
ITBig |
ITChar |

Instances

Eq IntTy # |
Methods (==) :: IntTy -> IntTy -> Bool # (/=) :: IntTy -> IntTy -> Bool #
Data IntTy # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IntTy -> c IntTy # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IntTy # toConstr :: IntTy -> Constr # dataTypeOf :: IntTy -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c IntTy) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IntTy) # gmapT :: (forall b. Data b => b -> b) -> IntTy -> IntTy # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IntTy -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IntTy -> r # gmapQ :: (forall d. Data d => d -> u) -> IntTy -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> IntTy -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> IntTy -> m IntTy # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IntTy -> m IntTy # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IntTy -> m IntTy #
Ord IntTy # |
Methods compare :: IntTy -> IntTy -> Ordering # (<) :: IntTy -> IntTy -> Bool # (<=) :: IntTy -> IntTy -> Bool # (>) :: IntTy -> IntTy -> Bool # (>=) :: IntTy -> IntTy -> Bool # max :: IntTy -> IntTy -> IntTy # min :: IntTy -> IntTy -> IntTy #
Show IntTy # |
Methods showsPrec :: Int -> IntTy -> ShowS # show :: IntTy -> String # showList :: [IntTy] -> ShowS #
Generic IntTy # |
Associated Types type Rep IntTy :: * -> * # Methods from :: IntTy -> Rep IntTy x # to :: Rep IntTy x -> IntTy #
type Rep IntTy # |
type Rep IntTy = D1 (MetaData "IntTy" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "ITFixed" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 NativeTy))) (C1 (MetaCons "ITNative" PrefixI False) U1)) ((:+:) (C1 (MetaCons "ITBig" PrefixI False) U1) (C1 (MetaCons "ITChar" PrefixI False) U1)))

data Name #

Names are hierarchies of strings, describing scope (so no danger of duplicate names, but need to be careful on lookup).

Constructors

UN !Text | User-provided name
NS !Name [Text] | Root, namespaces
MN !Int !Text | Machine chosen names
SN !SpecialName | Decorated function names
SymRef Int | Reference to IBC file symbol table (used during serialisation)

Instances

Eq Name # |
Methods (==) :: Name -> Name -> Bool # (/=) :: Name -> Name -> Bool #
Data Name # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Name -> c Name # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Name # toConstr :: Name -> Constr # dataTypeOf :: Name -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Name) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name) # gmapT :: (forall b. Data b => b -> b) -> Name -> Name # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r # gmapQ :: (forall d. Data d => d -> u) -> Name -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Name -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Name -> m Name # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name #
Ord Name # |
Methods compare :: Name -> Name -> Ordering # (<) :: Name -> Name -> Bool # (<=) :: Name -> Name -> Bool # (>) :: Name -> Name -> Bool # (>=) :: Name -> Name -> Bool # max :: Name -> Name -> Name # min :: Name -> Name -> Name #
Show Name # |
Methods showsPrec :: Int -> Name -> ShowS # show :: Name -> String # showList :: [Name] -> ShowS #
Show Err # |
Methods showsPrec :: Int -> Err -> ShowS # show :: Err -> String # showList :: [Err] -> ShowS #
Generic Name # |
Associated Types type Rep Name :: * -> * # Methods from :: Name -> Rep Name x # to :: Rep Name x -> Name #
TermSize CaseAlt # |
Methods termsize :: Name -> CaseAlt -> Int #
TermSize SC # |
Methods termsize :: Name -> SC -> Int #
SExpable Name # |
Methods toSExp :: Name -> SExp #
TermSize (TT Name) # |
Methods termsize :: Name -> TT Name -> Int #
type Rep Name # |
type Rep Name = D1 (MetaData "Name" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "UN" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Text))) (C1 (MetaCons "NS" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Text]))))) ((:+:) (C1 (MetaCons "MN" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedUnpack) (Rec0 Int)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Text)))) ((:+:) (C1 (MetaCons "SN" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 SpecialName))) (C1 (MetaCons "SymRef" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))))

data NameOutput #

Output annotation for pretty-printed name - decides colour

Constructors

TypeOutput |
FunOutput |
DataOutput |
MetavarOutput |
PostulateOutput |

Instances

Eq NameOutput # |
Methods (==) :: NameOutput -> NameOutput -> Bool # (/=) :: NameOutput -> NameOutput -> Bool #
Show NameOutput # |
Methods showsPrec :: Int -> NameOutput -> ShowS # show :: NameOutput -> String # showList :: [NameOutput] -> ShowS #
Generic NameOutput # |
Associated Types type Rep NameOutput :: * -> * # Methods from :: NameOutput -> Rep NameOutput x # to :: Rep NameOutput x -> NameOutput #
SExpable NameOutput # |
Methods toSExp :: NameOutput -> SExp #
type Rep NameOutput # |
type Rep NameOutput = D1 (MetaData "NameOutput" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "TypeOutput" PrefixI False) U1) (C1 (MetaCons "FunOutput" PrefixI False) U1)) ((:+:) (C1 (MetaCons "DataOutput" PrefixI False) U1) ((:+:) (C1 (MetaCons "MetavarOutput" PrefixI False) U1) (C1 (MetaCons "PostulateOutput" PrefixI False) U1))))

data NameType #

Constructors

Bound |
Ref |
DCon | Data constructor
Fields nt_tag :: Int nt_arity :: Int nt_unique :: Bool
TCon | Type constructor
Fields nt_tag :: Int nt_arity :: Int

Instances

Eq NameType # |
Methods (==) :: NameType -> NameType -> Bool # (/=) :: NameType -> NameType -> Bool #
Data NameType # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NameType -> c NameType # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NameType # toConstr :: NameType -> Constr # dataTypeOf :: NameType -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c NameType) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameType) # gmapT :: (forall b. Data b => b -> b) -> NameType -> NameType # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NameType -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NameType -> r # gmapQ :: (forall d. Data d => d -> u) -> NameType -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> NameType -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NameType -> m NameType # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NameType -> m NameType # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NameType -> m NameType #
Ord NameType # |
Methods compare :: NameType -> NameType -> Ordering # (<) :: NameType -> NameType -> Bool # (<=) :: NameType -> NameType -> Bool # (>) :: NameType -> NameType -> Bool # (>=) :: NameType -> NameType -> Bool # max :: NameType -> NameType -> NameType # min :: NameType -> NameType -> NameType #
Show NameType # |
Methods showsPrec :: Int -> NameType -> ShowS # show :: NameType -> String # showList :: [NameType] -> ShowS #
Generic NameType # |
Associated Types type Rep NameType :: * -> * # Methods from :: NameType -> Rep NameType x # to :: Rep NameType x -> NameType #
type Rep NameType # |
type Rep NameType = D1 (MetaData "NameType" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "Bound" PrefixI False) U1) (C1 (MetaCons "Ref" PrefixI False) U1)) ((:+:) (C1 (MetaCons "DCon" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "nt_tag") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) ((:*:) (S1 (MetaSel (Just Symbol "nt_arity") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) (S1 (MetaSel (Just Symbol "nt_unique") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))))) (C1 (MetaCons "TCon" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "nt_tag") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) (S1 (MetaSel (Just Symbol "nt_arity") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))))

data NativeTy #

Constructors

IT8 |
IT16 |
IT32 |
IT64 |

Instances

Enum NativeTy # |
Methods succ :: NativeTy -> NativeTy # pred :: NativeTy -> NativeTy # toEnum :: Int -> NativeTy # fromEnum :: NativeTy -> Int # enumFrom :: NativeTy -> [NativeTy] # enumFromThen :: NativeTy -> NativeTy -> [NativeTy] # enumFromTo :: NativeTy -> NativeTy -> [NativeTy] # enumFromThenTo :: NativeTy -> NativeTy -> NativeTy -> [NativeTy] #
Eq NativeTy # |
Methods (==) :: NativeTy -> NativeTy -> Bool # (/=) :: NativeTy -> NativeTy -> Bool #
Data NativeTy # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NativeTy -> c NativeTy # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NativeTy # toConstr :: NativeTy -> Constr # dataTypeOf :: NativeTy -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c NativeTy) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NativeTy) # gmapT :: (forall b. Data b => b -> b) -> NativeTy -> NativeTy # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NativeTy -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NativeTy -> r # gmapQ :: (forall d. Data d => d -> u) -> NativeTy -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> NativeTy -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NativeTy -> m NativeTy # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NativeTy -> m NativeTy # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NativeTy -> m NativeTy #
Ord NativeTy # |
Methods compare :: NativeTy -> NativeTy -> Ordering # (<) :: NativeTy -> NativeTy -> Bool # (<=) :: NativeTy -> NativeTy -> Bool # (>) :: NativeTy -> NativeTy -> Bool # (>=) :: NativeTy -> NativeTy -> Bool # max :: NativeTy -> NativeTy -> NativeTy # min :: NativeTy -> NativeTy -> NativeTy #
Show NativeTy # |
Methods showsPrec :: Int -> NativeTy -> ShowS # show :: NativeTy -> String # showList :: [NativeTy] -> ShowS #
Generic NativeTy # |
Associated Types type Rep NativeTy :: * -> * # Methods from :: NativeTy -> Rep NativeTy x # to :: Rep NativeTy x -> NativeTy #
type Rep NativeTy # |
type Rep NativeTy = D1 (MetaData "NativeTy" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "IT8" PrefixI False) U1) (C1 (MetaCons "IT16" PrefixI False) U1)) ((:+:) (C1 (MetaCons "IT32" PrefixI False) U1) (C1 (MetaCons "IT64" PrefixI False) U1)))

data OutputAnnotation #

Output annotations for pretty-printing

Constructors

AnnName Name (Maybe NameOutput) (Maybe String) (Maybe String) | ^ The name, classification, docs overview, and pretty-printed type
AnnBoundName Name Bool | ^ The name and whether it is implicit
AnnConst Const |
AnnData String String | type, doc overview
AnnType String String | name, doc overview
AnnKeyword |
AnnFC FC |
AnnTextFmt TextFormatting |
AnnLink String | A link to this URL
AnnTerm [(Name, Bool)] (TT Name) | pprint bound vars, original term
AnnSearchResult Ordering | more general, isomorphic, or more specific
AnnErr Err |
AnnNamespace [Text] (Maybe FilePath) | A namespace (e.g. on an import line or in a namespace declaration). Stored starting at the root, with the hierarchy fully resolved. If a file path is present, then the namespace represents a module imported from that file.
AnnQuasiquote |
AnnAntiquote |

Instances

Eq OutputAnnotation # |
Methods (==) :: OutputAnnotation -> OutputAnnotation -> Bool # (/=) :: OutputAnnotation -> OutputAnnotation -> Bool #
Show OutputAnnotation # |
Methods showsPrec :: Int -> OutputAnnotation -> ShowS # show :: OutputAnnotation -> String # showList :: [OutputAnnotation] -> ShowS #
Generic OutputAnnotation # |
Associated Types type Rep OutputAnnotation :: * -> * # Methods from :: OutputAnnotation -> Rep OutputAnnotation x # to :: Rep OutputAnnotation x -> OutputAnnotation #
SExpable OutputAnnotation # |
Methods toSExp :: OutputAnnotation -> SExp #
type Rep OutputAnnotation # |
type Rep OutputAnnotation = D1 (MetaData "OutputAnnotation" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "AnnName" PrefixI False) ((:*:) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe NameOutput)))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String)))))) ((:+:) (C1 (MetaCons "AnnBoundName" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))) (C1 (MetaCons "AnnConst" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Const))))) ((:+:) ((:+:) (C1 (MetaCons "AnnData" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))) (C1 (MetaCons "AnnType" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))))) ((:+:) (C1 (MetaCons "AnnKeyword" PrefixI False) U1) (C1 (MetaCons "AnnFC" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FC)))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "AnnTextFmt" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 TextFormatting))) (C1 (MetaCons "AnnLink" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))) ((:+:) (C1 (MetaCons "AnnTerm" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Name, Bool)])) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (TT Name))))) (C1 (MetaCons "AnnSearchResult" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Ordering))))) ((:+:) ((:+:) (C1 (MetaCons "AnnErr" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Err))) (C1 (MetaCons "AnnNamespace" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Text])) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe FilePath)))))) ((:+:) (C1 (MetaCons "AnnQuasiquote" PrefixI False) U1) (C1 (MetaCons "AnnAntiquote" PrefixI False) U1)))))

data Provenance #

Constructors

ExpectedType |
TooManyArgs Term |
InferredVal |
GivenVal |
SourceTerm Term |

Instances

Eq Provenance # |
Methods (==) :: Provenance -> Provenance -> Bool # (/=) :: Provenance -> Provenance -> Bool #
Data Provenance # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Provenance -> c Provenance # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Provenance # toConstr :: Provenance -> Constr # dataTypeOf :: Provenance -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Provenance) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Provenance) # gmapT :: (forall b. Data b => b -> b) -> Provenance -> Provenance # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Provenance -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Provenance -> r # gmapQ :: (forall d. Data d => d -> u) -> Provenance -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Provenance -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Provenance -> m Provenance # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Provenance -> m Provenance # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Provenance -> m Provenance #
Ord Provenance # |
Methods compare :: Provenance -> Provenance -> Ordering # (<) :: Provenance -> Provenance -> Bool # (<=) :: Provenance -> Provenance -> Bool # (>) :: Provenance -> Provenance -> Bool # (>=) :: Provenance -> Provenance -> Bool # max :: Provenance -> Provenance -> Provenance # min :: Provenance -> Provenance -> Provenance #
Show Provenance # |
Methods showsPrec :: Int -> Provenance -> ShowS # show :: Provenance -> String # showList :: [Provenance] -> ShowS #
Generic Provenance # |
Associated Types type Rep Provenance :: * -> * # Methods from :: Provenance -> Rep Provenance x # to :: Rep Provenance x -> Provenance #
type Rep Provenance # |
type Rep Provenance = D1 (MetaData "Provenance" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "ExpectedType" PrefixI False) U1) (C1 (MetaCons "TooManyArgs" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Term)))) ((:+:) (C1 (MetaCons "InferredVal" PrefixI False) U1) ((:+:) (C1 (MetaCons "GivenVal" PrefixI False) U1) (C1 (MetaCons "SourceTerm" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Term))))))

data Raw #

Constructors

Var Name |
RBind Name (Binder Raw) Raw |
RApp Raw Raw |
RType |
RUType Universe |
RConstant Const |

Instances

Eq Raw # |
Methods (==) :: Raw -> Raw -> Bool # (/=) :: Raw -> Raw -> Bool #
Data Raw # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Raw -> c Raw # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Raw # toConstr :: Raw -> Constr # dataTypeOf :: Raw -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Raw) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Raw) # gmapT :: (forall b. Data b => b -> b) -> Raw -> Raw # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Raw -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Raw -> r # gmapQ :: (forall d. Data d => d -> u) -> Raw -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Raw -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Raw -> m Raw # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Raw -> m Raw # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Raw -> m Raw #
Ord Raw # |
Methods compare :: Raw -> Raw -> Ordering # (<) :: Raw -> Raw -> Bool # (<=) :: Raw -> Raw -> Bool # (>) :: Raw -> Raw -> Bool # (>=) :: Raw -> Raw -> Bool # max :: Raw -> Raw -> Raw # min :: Raw -> Raw -> Raw #
Show Raw # |
Methods showsPrec :: Int -> Raw -> ShowS # show :: Raw -> String # showList :: [Raw] -> ShowS #
Generic Raw # |
Associated Types type Rep Raw :: * -> * # Methods from :: Raw -> Rep Raw x # to :: Rep Raw x -> Raw #
type Rep Raw # |
type Rep Raw = D1 (MetaData "Raw" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) (C1 (MetaCons "Var" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name))) ((:+:) (C1 (MetaCons "RBind" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Name)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Binder Raw))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Raw))))) (C1 (MetaCons "RApp" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Raw)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Raw)))))) ((:+:) (C1 (MetaCons "RType" PrefixI False) U1) ((:+:) (C1 (MetaCons "RUType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Universe))) (C1 (MetaCons "RConstant" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Const))))))

data RigCount #

Constructors

Rig0 |
Rig1 |
RigW |

Instances

Eq RigCount # |
Methods (==) :: RigCount -> RigCount -> Bool # (/=) :: RigCount -> RigCount -> Bool #
Data RigCount # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RigCount -> c RigCount # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RigCount # toConstr :: RigCount -> Constr # dataTypeOf :: RigCount -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c RigCount) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RigCount) # gmapT :: (forall b. Data b => b -> b) -> RigCount -> RigCount # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RigCount -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RigCount -> r # gmapQ :: (forall d. Data d => d -> u) -> RigCount -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> RigCount -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RigCount -> m RigCount # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RigCount -> m RigCount # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RigCount -> m RigCount #
Ord RigCount # |
Methods compare :: RigCount -> RigCount -> Ordering # (<) :: RigCount -> RigCount -> Bool # (<=) :: RigCount -> RigCount -> Bool # (>) :: RigCount -> RigCount -> Bool # (>=) :: RigCount -> RigCount -> Bool # max :: RigCount -> RigCount -> RigCount # min :: RigCount -> RigCount -> RigCount #
Show RigCount # |
Methods showsPrec :: Int -> RigCount -> ShowS # show :: RigCount -> String # showList :: [RigCount] -> ShowS #
Generic RigCount # |
Associated Types type Rep RigCount :: * -> * # Methods from :: RigCount -> Rep RigCount x # to :: Rep RigCount x -> RigCount #
type Rep RigCount # |
type Rep RigCount = D1 (MetaData "RigCount" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "Rig0" PrefixI False) U1) ((:+:) (C1 (MetaCons "Rig1" PrefixI False) U1) (C1 (MetaCons "RigW" PrefixI False) U1)))

data SpecialName #

Constructors

WhereN !Int !Name !Name |
WithN !Int !Name |
ImplementationN !Name [Text] |
ParentN !Name !Text |
MethodN !Name |
CaseN !FC' !Name |
ElimN !Name |
ImplementationCtorN !Name |
MetaN !Name !Name |

Instances

Eq SpecialName # |
Methods (==) :: SpecialName -> SpecialName -> Bool # (/=) :: SpecialName -> SpecialName -> Bool #
Data SpecialName # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SpecialName -> c SpecialName # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SpecialName # toConstr :: SpecialName -> Constr # dataTypeOf :: SpecialName -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SpecialName) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SpecialName) # gmapT :: (forall b. Data b => b -> b) -> SpecialName -> SpecialName # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SpecialName -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SpecialName -> r # gmapQ :: (forall d. Data d => d -> u) -> SpecialName -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> SpecialName -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SpecialName -> m SpecialName # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SpecialName -> m SpecialName # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SpecialName -> m SpecialName #
Ord SpecialName # |
Methods compare :: SpecialName -> SpecialName -> Ordering # (<) :: SpecialName -> SpecialName -> Bool # (<=) :: SpecialName -> SpecialName -> Bool # (>) :: SpecialName -> SpecialName -> Bool # (>=) :: SpecialName -> SpecialName -> Bool # max :: SpecialName -> SpecialName -> SpecialName # min :: SpecialName -> SpecialName -> SpecialName #
Show SpecialName # |
Methods showsPrec :: Int -> SpecialName -> ShowS # show :: SpecialName -> String # showList :: [SpecialName] -> ShowS #
Generic SpecialName # |
Associated Types type Rep SpecialName :: * -> * # Methods from :: SpecialName -> Rep SpecialName x # to :: Rep SpecialName x -> SpecialName #
type Rep SpecialName # |
type Rep SpecialName = D1 (MetaData "SpecialName" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "WhereN" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedUnpack) (Rec0 Int)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name))))) (C1 (MetaCons "WithN" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedUnpack) (Rec0 Int)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name))))) ((:+:) (C1 (MetaCons "ImplementationN" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Text])))) (C1 (MetaCons "ParentN" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Text)))))) ((:+:) ((:+:) (C1 (MetaCons "MethodN" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name))) (C1 (MetaCons "CaseN" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 FC')) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name))))) ((:+:) (C1 (MetaCons "ElimN" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name))) ((:+:) (C1 (MetaCons "ImplementationCtorN" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name))) (C1 (MetaCons "MetaN" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Name))))))))

data TC a #

Constructors

OK !a |
Error Err |

Instances

Monad TC # |
Methods (>>=) :: TC a -> (a -> TC b) -> TC b # (>>) :: TC a -> TC b -> TC b # return :: a -> TC a # fail :: String -> TC a #
Functor TC # |
Methods fmap :: (a -> b) -> TC a -> TC b # (<$) :: a -> TC b -> TC a #
Applicative TC # |
Methods pure :: a -> TC a # (<*>) :: TC (a -> b) -> TC a -> TC b # (*>) :: TC a -> TC b -> TC b # (<*) :: TC a -> TC b -> TC a #
Alternative TC # |
Methods empty :: TC a # (<|>) :: TC a -> TC a -> TC a # some :: TC a -> TC [a] # many :: TC a -> TC [a] #
MonadPlus TC # |
Methods mzero :: TC a # mplus :: TC a -> TC a -> TC a #
Eq a => Eq (TC a) # |
Methods (==) :: TC a -> TC a -> Bool # (/=) :: TC a -> TC a -> Bool #
Show a => Show (TC a) # |
Methods showsPrec :: Int -> TC a -> ShowS # show :: TC a -> String # showList :: [TC a] -> ShowS #

type Term = TT Name #

class TermSize a where #

Minimal complete definition

termsize

Methods

termsize :: Name -> a -> Int #

Instances

TermSize CaseAlt # |
Methods termsize :: Name -> CaseAlt -> Int #
TermSize SC # |
Methods termsize :: Name -> SC -> Int #
TermSize a => TermSize [a] # |
Methods termsize :: Name -> [a] -> Int #
TermSize (TT Name) # |
Methods termsize :: Name -> TT Name -> Int #

data TextFormatting #

Text formatting output

Constructors

BoldText |
ItalicText |
UnderlineText |

Instances

Eq TextFormatting # |
Methods (==) :: TextFormatting -> TextFormatting -> Bool # (/=) :: TextFormatting -> TextFormatting -> Bool #
Show TextFormatting # |
Methods showsPrec :: Int -> TextFormatting -> ShowS # show :: TextFormatting -> String # showList :: [TextFormatting] -> ShowS #
Generic TextFormatting # |
Associated Types type Rep TextFormatting :: * -> * # Methods from :: TextFormatting -> Rep TextFormatting x # to :: Rep TextFormatting x -> TextFormatting #
type Rep TextFormatting # |
type Rep TextFormatting = D1 (MetaData "TextFormatting" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "BoldText" PrefixI False) U1) ((:+:) (C1 (MetaCons "ItalicText" PrefixI False) U1) (C1 (MetaCons "UnderlineText" PrefixI False) U1)))

data TT n #

Terms in the core language. The type parameter is the type of identifiers used for bindings and explicit named references; usually we use `TT `Name``.

Constructors

P NameType n (TT n) | named references with type (P for Parameter, motivated by McKinna and Pollack's Pure Type Systems Formalized)
V !Int | a resolved de Bruijn-indexed variable
Bind n !(Binder (TT n)) (TT n) | a binding
App (AppStatus n) !(TT n) (TT n) | function, function type, arg
Constant Const | constant
Proj (TT n) !Int | argument projection; runtime only (-1) is a special case for 'subtract one from BI'
Erased | an erased term
Impossible | special case for totality checking
Inferred (TT n) | For building case trees when coverage checkimg only. Marks a term as being inferred by the machine, rather than given by the programmer
TType UExp | the type of types at some level
UType Universe | Uniqueness type universe (disjoint from TType)

Instances

Functor TT # |
Methods fmap :: (a -> b) -> TT a -> TT b # (<$) :: a -> TT b -> TT a #
Show Err # |
Methods showsPrec :: Int -> Err -> ShowS # show :: Err -> String # showList :: [Err] -> ShowS #
TermSize CaseAlt # |
Methods termsize :: Name -> CaseAlt -> Int #
TermSize SC # |
Methods termsize :: Name -> SC -> Int #
Eq n => Eq (TT n) # |
Methods (==) :: TT n -> TT n -> Bool # (/=) :: TT n -> TT n -> Bool #
Data n => Data (TT n) # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TT n -> c (TT n) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (TT n) # toConstr :: TT n -> Constr # dataTypeOf :: TT n -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (TT n)) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (TT n)) # gmapT :: (forall b. Data b => b -> b) -> TT n -> TT n # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TT n -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TT n -> r # gmapQ :: (forall d. Data d => d -> u) -> TT n -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> TT n -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TT n -> m (TT n) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TT n -> m (TT n) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TT n -> m (TT n) #
Ord n => Ord (TT n) # |
Methods compare :: TT n -> TT n -> Ordering # (<) :: TT n -> TT n -> Bool # (<=) :: TT n -> TT n -> Bool # (>) :: TT n -> TT n -> Bool # (>=) :: TT n -> TT n -> Bool # max :: TT n -> TT n -> TT n # min :: TT n -> TT n -> TT n #
(Eq n, Show n) => Show (TT n) # |
Methods showsPrec :: Int -> TT n -> ShowS # show :: TT n -> String # showList :: [TT n] -> ShowS #
Generic (TT n) # |
Associated Types type Rep (TT n) :: * -> * # Methods from :: TT n -> Rep (TT n) x # to :: Rep (TT n) x -> TT n #
TermSize (TT Name) # |
Methods termsize :: Name -> TT Name -> Int #
type Rep (TT n) # |
type Rep (TT n) = D1 (MetaData "TT" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "P" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 NameType)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 n)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (TT n)))))) (C1 (MetaCons "V" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedUnpack) (Rec0 Int)))) ((:+:) (C1 (MetaCons "Bind" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 n)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Binder (TT n)))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (TT n)))))) ((:+:) (C1 (MetaCons "App" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (AppStatus n))) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (TT n))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (TT n)))))) (C1 (MetaCons "Constant" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Const)))))) ((:+:) ((:+:) (C1 (MetaCons "Proj" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (TT n))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedUnpack) (Rec0 Int)))) ((:+:) (C1 (MetaCons "Erased" PrefixI False) U1) (C1 (MetaCons "Impossible" PrefixI False) U1))) ((:+:) (C1 (MetaCons "Inferred" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (TT n)))) ((:+:) (C1 (MetaCons "TType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UExp))) (C1 (MetaCons "UType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Universe)))))))

type Type = Term #

data TypeInfo #

Constructors

TI |
Fields con_names :: [Name] codata :: Bool data_opts :: DataOpts param_pos :: [Int] mutual_types :: [Name] linear_con :: Bool

Instances

Show TypeInfo # |
Methods showsPrec :: Int -> TypeInfo -> ShowS # show :: TypeInfo -> String # showList :: [TypeInfo] -> ShowS #
Generic TypeInfo # |
Associated Types type Rep TypeInfo :: * -> * # Methods from :: TypeInfo -> Rep TypeInfo x # to :: Rep TypeInfo x -> TypeInfo #
type Rep TypeInfo # |
type Rep TypeInfo = D1 (MetaData "TypeInfo" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) (C1 (MetaCons "TI" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "con_names") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Name])) ((:*:) (S1 (MetaSel (Just Symbol "codata") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "data_opts") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 DataOpts)))) ((:*:) (S1 (MetaSel (Just Symbol "param_pos") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Int])) ((:*:) (S1 (MetaSel (Just Symbol "mutual_types") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Name])) (S1 (MetaSel (Just Symbol "linear_con") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))))))

data UConstraint #

Universe constraints

Constructors

ULT UExp UExp | Strictly less than
ULE UExp UExp | Less than or equal to

Instances

Eq UConstraint # |
Methods (==) :: UConstraint -> UConstraint -> Bool # (/=) :: UConstraint -> UConstraint -> Bool #
Data UConstraint # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UConstraint -> c UConstraint # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UConstraint # toConstr :: UConstraint -> Constr # dataTypeOf :: UConstraint -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c UConstraint) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UConstraint) # gmapT :: (forall b. Data b => b -> b) -> UConstraint -> UConstraint # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UConstraint -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UConstraint -> r # gmapQ :: (forall d. Data d => d -> u) -> UConstraint -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> UConstraint -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> UConstraint -> m UConstraint # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UConstraint -> m UConstraint # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UConstraint -> m UConstraint #
Ord UConstraint # |
Methods compare :: UConstraint -> UConstraint -> Ordering # (<) :: UConstraint -> UConstraint -> Bool # (<=) :: UConstraint -> UConstraint -> Bool # (>) :: UConstraint -> UConstraint -> Bool # (>=) :: UConstraint -> UConstraint -> Bool # max :: UConstraint -> UConstraint -> UConstraint # min :: UConstraint -> UConstraint -> UConstraint #
Show UConstraint # |
Methods showsPrec :: Int -> UConstraint -> ShowS # show :: UConstraint -> String # showList :: [UConstraint] -> ShowS #
Generic UConstraint # |
Associated Types type Rep UConstraint :: * -> * # Methods from :: UConstraint -> Rep UConstraint x # to :: Rep UConstraint x -> UConstraint #
type Rep UConstraint # |
type Rep UConstraint = D1 (MetaData "UConstraint" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "ULT" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UExp)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UExp)))) (C1 (MetaCons "ULE" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UExp)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UExp)))))

type UCs = (Int, [UConstraint]) #

data UExp #

Universe expressions for universe checking

Constructors

UVar String Int | universe variable, with source file to disambiguate
UVal Int | explicit universe level

Instances

Eq UExp # |
Methods (==) :: UExp -> UExp -> Bool # (/=) :: UExp -> UExp -> Bool #
Data UExp # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UExp -> c UExp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UExp # toConstr :: UExp -> Constr # dataTypeOf :: UExp -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c UExp) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UExp) # gmapT :: (forall b. Data b => b -> b) -> UExp -> UExp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UExp -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UExp -> r # gmapQ :: (forall d. Data d => d -> u) -> UExp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> UExp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> UExp -> m UExp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UExp -> m UExp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UExp -> m UExp #
Ord UExp # |
Methods compare :: UExp -> UExp -> Ordering # (<) :: UExp -> UExp -> Bool # (<=) :: UExp -> UExp -> Bool # (>) :: UExp -> UExp -> Bool # (>=) :: UExp -> UExp -> Bool # max :: UExp -> UExp -> UExp # min :: UExp -> UExp -> UExp #
Show UExp # |
Methods showsPrec :: Int -> UExp -> ShowS # show :: UExp -> String # showList :: [UExp] -> ShowS #
Generic UExp # |
Associated Types type Rep UExp :: * -> * # Methods from :: UExp -> Rep UExp x # to :: Rep UExp x -> UExp #
type Rep UExp # |
type Rep UExp = D1 (MetaData "UExp" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "UVar" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))) (C1 (MetaCons "UVal" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))

data Universe #

Constructors

NullType |
UniqueType |
AllTypes |

Instances

Eq Universe # |
Methods (==) :: Universe -> Universe -> Bool # (/=) :: Universe -> Universe -> Bool #
Data Universe # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Universe -> c Universe # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Universe # toConstr :: Universe -> Constr # dataTypeOf :: Universe -> DataType # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Universe) # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Universe) # gmapT :: (forall b. Data b => b -> b) -> Universe -> Universe # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Universe -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Universe -> r # gmapQ :: (forall d. Data d => d -> u) -> Universe -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Universe -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Universe -> m Universe # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Universe -> m Universe # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Universe -> m Universe #
Ord Universe # |
Methods compare :: Universe -> Universe -> Ordering # (<) :: Universe -> Universe -> Bool # (<=) :: Universe -> Universe -> Bool # (>) :: Universe -> Universe -> Bool # (>=) :: Universe -> Universe -> Bool # max :: Universe -> Universe -> Universe # min :: Universe -> Universe -> Universe #
Show Universe # |
Methods showsPrec :: Int -> Universe -> ShowS # show :: Universe -> String # showList :: [Universe] -> ShowS #
Generic Universe # |
Associated Types type Rep Universe :: * -> * # Methods from :: Universe -> Rep Universe x # to :: Rep Universe x -> Universe #
type Rep Universe # |
type Rep Universe = D1 (MetaData "Universe" "Idris.Core.TT" "idris-1.0-AhzFHyMpjVK9jY0cFJjTN5" False) ((:+:) (C1 (MetaCons "NullType" PrefixI False) U1) ((:+:) (C1 (MetaCons "UniqueType" PrefixI False) U1) (C1 (MetaCons "AllTypes" PrefixI False) U1)))

addAlist :: [(Name, a)] -> Ctxt a -> Ctxt a #

addBinder :: TT n -> TT n #

addDef :: Name -> a -> Ctxt a -> Ctxt a #

allTTNames :: Eq n => TT n -> [n] #

arity :: TT n -> Int #

Return the arity of a (normalised) type

bindAll :: [(n, Binder (TT n))] -> TT n -> TT n #

Introduce a `Bind` into the given term for each element of the given list of (name, binder) pairs.

bindingOf #

Arguments

:: Name | ^ the bound name
-> Bool | ^ whether the name is implicit
-> Doc OutputAnnotation |

Pretty-printer helper for the binding site of a name

bindTyArgs :: (TT n -> Binder (TT n)) -> [(n, TT n)] -> TT n -> TT n #

Like `bindAll`, but the `Binder`s are `TT` terms instead. The first argument is a function to map `TT` terms to `Binder`s. This function might often be something like `Lam`, which directly constructs a `Binder` from a `TT` term.

caseName :: Name -> Bool #

constDocs :: Const -> String #

Get the docstring for a Const

constIsType :: Const -> Bool #

Determines whether the input constant represents a type

deleteDefExact :: Name -> Ctxt a -> Ctxt a #

discard :: Monad m => m a -> m () #

emptyContext :: Map k a #

emptyFC :: FC #

Empty source location

explicitNames :: TT n -> TT n #

Replace all non-free de Bruijn references in the given term with references to the name of their binding.

fc_end :: FC -> (Int, Int) #

Give a notion of end location associated with an FC

fc_fname :: FC -> String #

Give a notion of filename associated with an FC

fc_start :: FC -> (Int, Int) #

Give a notion of start location associated with an FC

fcIn :: FC -> FC -> Bool #

Determine whether the first argument is completely contained in the second

fileFC :: String -> FC #

Source location with file only

finalise :: Eq n => TT n -> TT n #

Replace every non-free reference to the name of a binding in the given term with a de Bruijn index.

fmapMB :: Monad m => (a -> m b) -> Binder a -> m (Binder b) #

forget :: TT Name -> Raw #

Cast a `TT` term to a `Raw` value, discarding universe information and the types of named references and replacing all de Bruijn indices with the corresponding name. It is an error if there are free de Bruijn indices.

forgetEnv :: [Name] -> TT Name -> Raw #

freeNames :: Eq n => TT n -> [n] #

Returns all names used free in the term

getArgTys :: TT n -> [(n, TT n)] #

Return a list of pairs of the names of the outermost `Pi`-bound variables in the given term, together with their types.

getRetTy :: TT n -> TT n #

substRetTy :: TT n -> TT n #

As getRetTy but substitutes names for de Bruijn indices

implicitable :: Name -> Bool #

instantiate :: TT n -> TT n -> TT n #

Replace the outermost (index 0) de Bruijn variable with the given term

internalNS :: String #

intTyName :: IntTy -> String #

isInjective :: TT n -> Bool #

A term is injective iff it is a data constructor, type constructor, constant, the type Type, pi-binding, or an application of an injective term.

isTypeConst :: Const -> Bool #

lookupCtxt :: Name -> Ctxt a -> [a] #

lookupCtxtExact :: Name -> Ctxt a -> Maybe a #

lookupCtxtName :: Name -> Ctxt a -> [(Name, a)] #

Look up a name in the context, given an optional namespace. The name (n) may itself have a (partial) namespace given.

Rules for resolution:

- if an explicit namespace is given, return the names which match it. If none match, return all names.
- if the name has has explicit namespace given, return the names which match it and ignore the given namespace.
- otherwise, return all names.

mapCtxt :: (a -> b) -> Ctxt a -> Ctxt b #

mkApp :: TT n -> [TT n] -> TT n #

Returns a term representing the application of the first argument (a function) to every element of the second argument.

nativeTyWidth :: NativeTy -> Int #

nextName :: Name -> Name #

noOccurrence :: Eq n => n -> TT n -> Bool #

Returns true if V 0 and bound name n do not occur in the term

nsroot :: Name -> Name #

occurrences :: Eq n => n -> TT n -> Int #

Return number of occurrences of V 0 or bound name i the term

pEraseType :: TT n -> TT n #

pmap :: (t1 -> t) -> (t1, t1) -> (t, t) #

pprintRaw #

Arguments

:: [Name] | Bound names, for highlighting
-> Raw | The term to pretty-print
-> Doc OutputAnnotation |

Pretty-print a raw term.

pprintTT #

Arguments

:: [Name] | The bound names (for highlighting and de Bruijn indices)
-> TT Name | The term to be printed
-> Doc OutputAnnotation |

Pretty-print a term

pprintTTClause :: [(Name, Type)] -> Term -> Term -> Doc OutputAnnotation #

prettyEnv :: Env -> Term -> Doc OutputAnnotation #

psubst :: Eq n => n -> TT n -> TT n -> TT n #

pToV :: Eq n => n -> TT n -> TT n #

Replace references to the given `Name`-like id with references to de Bruijn index 0.

pToVs :: Eq n => [n] -> TT n -> TT n #

Convert several names. First in the list comes out as V 0

pureTerm :: TT Name -> Bool #

Check whether a term has any hole bindings in it - impure if so

raw_apply :: Raw -> [Raw] -> Raw #

raw_unapply :: Raw -> (Raw, [Raw]) #

refsIn :: TT Name -> [Name] #

safeForget :: TT Name -> Maybe Raw #

safeForgetEnv :: [Name] -> TT Name -> Maybe Raw #

showCG :: Name -> String #

showEnv :: (Eq n, Show n) => EnvTT n -> TT n -> String #

showEnvDbg :: (Show a, Eq a) => [(a, RigCount, Binder (TT a))] -> TT a -> [Char] #

showSep :: String -> [String] -> String #

sImplementationN :: Name -> [String] -> SpecialName #

sMN :: Int -> String -> Name #

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

spanFC :: FC -> FC -> FC #

Get the largest span containing the two FCs

str :: Text -> String #

subst #

Arguments

:: Eq n |
=> n | The id to replace
-> TT n | The replacement term
-> TT n | The term to replace in
-> TT n |

As `instantiate`, but in addition to replacing ``V` 0`, replace references to the given `Name`-like id.

substNames :: Eq n => [(n, TT n)] -> TT n -> TT n #

As `subst`, but takes a list of (name, substitution) pairs instead of a single name and substitution

substTerm #

Arguments

:: Eq n |
=> TT n | Old term
-> TT n | New term
-> TT n | template term
-> TT n |

Replaces all terms equal (in the sense of `(==)`) to the old term with the new term.

substV :: TT n -> TT n -> TT n #

As `instantiate`, but also decrement the indices of all de Bruijn variables remaining in the term, so that there are no more references to the variable that has been substituted.

sUN :: String -> Name #

tcname :: Name -> Bool #

Return True if the argument `Name` should be interpreted as the name of a interface.

termSmallerThan :: Int -> Term -> Bool #

Hard-code a heuristic maximum term size, to prevent attempts to serialize or force infinite or just gigantic terms

tfail :: Err -> TC a #

thead :: Text -> Char #

tnull :: Text -> Bool #

toAlist :: Ctxt a -> [(Name, a)] #

traceWhen :: Bool -> String -> t -> t #

txt :: String -> Text #

unApply :: TT n -> (TT n, [TT n]) #

Deconstruct an application; returns the function and a list of arguments

uniqueBinders :: [Name] -> TT Name -> TT Name #

uniqueName :: Name -> [Name] -> Name #

uniqueNameFrom :: [Name] -> [Name] -> Name #

uniqueNameSet :: Name -> Set Name -> Name #

unList :: Term -> Maybe [Term] #

updateDef :: Name -> (a -> a) -> Ctxt a -> Ctxt a #

vToP :: TT n -> TT n #

Replace de Bruijn indices in the given term with explicit references to the names of the bindings they refer to. It is an error if the given term contains free de Bruijn indices.

weakenTm :: Int -> TT n -> TT n #

Weaken a term by adding i to each de Bruijn index (i.e. lift it over i bindings)

rigPlus :: RigCount -> RigCount -> RigCount #

rigMult :: RigCount -> RigCount -> RigCount #

fstEnv :: (t2, t1, t) -> t2 #

rigEnv :: (t1, t2, t) -> t2 #

sndEnv :: (t1, t, t2) -> t2 #

lookupBinder :: Eq n => n -> EnvTT n -> Maybe (Binder (TT n)) #

envBinders :: [(t2, t, t1)] -> [(t2, t1)] #

envZero :: [(t2, t, t1)] -> [(t2, RigCount, t1)] #