Mikan
Safe HaskellNone
LanguageHaskell2010

Mikan.TypeChecking.Monad.Builtin

Synopsis

Documentation

builtinPrimitives :: [PrimitiveId] Source #

Identifiers of "primitive" functions which must be given a user-written definition and bound by a BUILTIN pragma, instead of being defined in a primitive block.

constrainedPrims :: [PrimitiveId] Source #

Primitives with typechecking constrants.

constructorForm :: HasBuiltins m => Term -> m Term Source #

Rewrite a literal to constructor form if possible.

constructorFormer :: HasBuiltins m => m (Term -> Term) Source #

Produce a function that rewrites a literal to constructor form if possible.

equalityView Source #

Arguments

:: Range

Range of the rewrite expression, if any.

-> Type

Identity type?

-> TCM EqualityView 

Check whether the type is actually an equality (lhs ≡ rhs) and extract lhs, rhs, and their type.

Precondition: type is reduced.

getBuiltin' :: HasBuiltins m => BuiltinId -> m (Maybe Term) Source #

Returns Nothing if built-in is not bound or bound to a Prim.

getPrimitive' :: HasBuiltins m => PrimitiveId -> m (Maybe PrimFun) Source #

Returns Nothing if primitive is not bound or bound to a Builtin.

getTerm :: (HasBuiltins m, IsBuiltin a) => ShortText -> a -> m Term Source #

getTerm use name looks up name as a primitive or builtin, and throws an error otherwise. The use argument describes how the name is used for the sake of the error message.

infallibleSortKit :: HasBuiltins m => m SortKit Source #

Compute a SortKit in contexts that do not support failure (e.g. Reify). This should only be used when we are sure that the primitive sorts have been bound, i.e. because it is "after" type checking.

pathUnview :: PathView -> Type Source #

Revert the PathView.

Postcondition: type is reduced.

pathView :: HasBuiltins m => Type -> m PathView Source #

Check whether the type is actually an path (lhs ≡ rhs) and extract lhs, rhs, and their type.

Precondition: type is reduced.

primEqualityName :: TCM QName Source #

Get the name of the equality type.

sortKit :: (HasBuiltins m, MonadTCError m) => m SortKit Source #

Compute a SortKit in an environment that supports failures.

When optLoadPrimitives is set to False, sortKit is a fallible operation, so for the uses of sortKit in fallible contexts (e.g. TCM), we report a type error rather than exploding.

newtype BuiltinAccess a Source #

The trivial implementation of HasBuiltins, using a constant TCState.

This may be used instead of TCMT/ReduceM where builtins must be accessed in a pure context.

Constructors

BuiltinAccess 

Fields

data EqualityTypeData Source #

Constructors

EqualityTypeData 

Fields

class EqualityUnview a where Source #

Revert the EqualityView.

Postcondition: type is reduced.

Methods

equalityUnview :: a -> Type Source #

data EqualityView Source #

View type as equality type.

Constructors

EqualityViewType EqualityTypeData

A type of the form u ≡ v decomposed into its parts. Used as type for the rewrite expression.

OtherType Type

A reduced type used as type for a with expression.

IdiomType Type

A reduced type used as type for the with inspect idiom.

Instances

Instances details
TermLike EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

Methods

traverseTermM :: Monad m => (Term -> m Term) -> EqualityView -> m EqualityView Source #

foldTerm :: Monoid m => (Term -> m) -> EqualityView -> m Source #

Free EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

EqualityUnview EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

PrettyTCM EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Pretty

Instantiate EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Reduce

InstantiateFull EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Reduce

Normalise EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Reduce

Reduce EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Reduce

Simplify EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Reduce

Subst EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

Associated Types

type SubstArg EqualityView 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

type SubstArg EqualityView Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

class (Functor m, Applicative m, Monad m) => HasBuiltins (m :: Type -> Type) where Source #

Minimal complete definition

Nothing

Methods

getBuiltinThing :: SomeBuiltin -> m (Maybe (Builtin PrimFun)) Source #

default getBuiltinThing :: forall (t :: (Type -> Type) -> Type -> Type) (n :: Type -> Type). (MonadTrans t, HasBuiltins n, t n ~ m) => SomeBuiltin -> m (Maybe (Builtin PrimFun)) Source #

Instances

Instances details
HasBuiltins TerM Source # 
Instance details

Defined in Mikan.Termination.Monad

HasBuiltins ReduceM Source # 
Instance details

Defined in Mikan.TypeChecking.Reduce.Monad

HasBuiltins BuiltinAccess Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (BlockT m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

MonadIO m => HasBuiltins (TCMT m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (NamesT m) Source # 
Instance details

Defined in Mikan.TypeChecking.Names

HasBuiltins m => HasBuiltins (ListT m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (ChangeT m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (MaybeT m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (ReaderT e m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (StateT s m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

(HasBuiltins m, Monoid w) => HasBuiltins (WriterT w m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (ExceptT e m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (IdentityT m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (ReaderT e m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

HasBuiltins m => HasBuiltins (StateT s m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

(HasBuiltins m, Monoid w) => HasBuiltins (WriterT w m) Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

data IntervalView Source #

Constructors

IZero 
IOne 
IMin (Arg Term) (Arg Term) 
IMax (Arg Term) (Arg Term) 
INeg (Arg Term) 
OTerm Term 

Instances

Instances details
Show IntervalView Source # 
Instance details

Defined in Mikan.TypeChecking.Monad.Builtin

data PathView Source #

View type as path type.

Constructors

PathType 

Fields

OType Type

reduced

data SortKit Source #

Sort primitives.

Constructors

SortKit