Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module contains type annotations for terms of the language.
Synopsis
- data Ann note f a = Ann {}
- newtype TyTerm prim loc v = TyTerm {}
- termType :: TyTerm prim loc v -> Type loc v
- termSignature :: (Ord v, Eq loc) => TyTerm prim loc v -> Signature loc v
- tyVarE :: Type loc var -> loc -> var -> TyTerm prim loc var
- tyPrimE :: Type loc var -> loc -> prim -> TyTerm prim loc var
- tyAppE :: Type loc v -> loc -> TyTerm prim loc v -> TyTerm prim loc v -> TyTerm prim loc v
- tyLamE :: Type loc v -> loc -> v -> TyTerm prim loc v -> TyTerm prim loc v
- tyLetE :: Type loc v -> loc -> Bind loc v (TyTerm prim loc v) -> TyTerm prim loc v -> TyTerm prim loc v
- tyLetRecE :: Type loc v -> loc -> [Bind loc v (TyTerm prim loc v)] -> TyTerm prim loc v -> TyTerm prim loc v
- tyAssertTypeE :: loc -> TyTerm prim loc v -> Type loc v -> TyTerm prim loc v
- tyCaseE :: Type loc v -> loc -> TyTerm prim loc v -> [CaseAlt loc v (TyTerm prim loc v)] -> TyTerm prim loc v
- tyConstrE :: loc -> Type loc v -> v -> TyTerm prim loc v
- tyBottomE :: Type loc v -> loc -> TyTerm prim loc v
- mapType :: TypeFunctor f => (Type loc var -> Type loc var) -> f loc var -> f loc var
Documentation
Type to annotate nodes of AST. We use it for type annotations.
Instances
Functor f => Functor (Ann note f) Source # | |
Foldable f => Foldable (Ann note f) Source # | |
Defined in Type.Check.HM.TyTerm fold :: Monoid m => Ann note f m -> m # foldMap :: Monoid m => (a -> m) -> Ann note f a -> m # foldMap' :: Monoid m => (a -> m) -> Ann note f a -> m # foldr :: (a -> b -> b) -> b -> Ann note f a -> b # foldr' :: (a -> b -> b) -> b -> Ann note f a -> b # foldl :: (b -> a -> b) -> b -> Ann note f a -> b # foldl' :: (b -> a -> b) -> b -> Ann note f a -> b # foldr1 :: (a -> a -> a) -> Ann note f a -> a # foldl1 :: (a -> a -> a) -> Ann note f a -> a # toList :: Ann note f a -> [a] # null :: Ann note f a -> Bool # length :: Ann note f a -> Int # elem :: Eq a => a -> Ann note f a -> Bool # maximum :: Ord a => Ann note f a -> a # minimum :: Ord a => Ann note f a -> a # | |
Traversable f => Traversable (Ann note f) Source # | |
Defined in Type.Check.HM.TyTerm | |
(Eq note, Eq1 f) => Eq1 (Ann note f) Source # | |
(Ord note, Ord1 f) => Ord1 (Ann note f) Source # | |
Defined in Type.Check.HM.TyTerm | |
(Show note, Show1 f) => Show1 (Ann note f) Source # | |
(Eq note, Eq (f a)) => Eq (Ann note f a) Source # | |
(Show note, Show (f a)) => Show (Ann note f a) Source # | |
newtype TyTerm prim loc v Source #
Terms with type annotations for all subexpressions.
tyVarE :: Type loc var -> loc -> var -> TyTerm prim loc var Source #
varE
loc x
constructs a variable whose name is x
with source code at loc
.
tyPrimE :: Type loc var -> loc -> prim -> TyTerm prim loc var Source #
varE
loc x
constructs a variable whose name is x
with source code at loc
.
tyAppE :: Type loc v -> loc -> TyTerm prim loc v -> TyTerm prim loc v -> TyTerm prim loc v Source #
appE
loc a b
constructs an application of a
to b
with source code at loc
.
tyLamE :: Type loc v -> loc -> v -> TyTerm prim loc v -> TyTerm prim loc v Source #
lamE
loc x e
constructs an abstraction of x
over e
with source code at loc
.
tyLetE :: Type loc v -> loc -> Bind loc v (TyTerm prim loc v) -> TyTerm prim loc v -> TyTerm prim loc v Source #
letE
loc binds e
constructs a binding of binds
in e
with source code at loc
.
No recursive bindings.
tyLetRecE :: Type loc v -> loc -> [Bind loc v (TyTerm prim loc v)] -> TyTerm prim loc v -> TyTerm prim loc v Source #
letRecE
loc binds e
constructs a recursive binding of binds
in e
with source code at loc
.
tyAssertTypeE :: loc -> TyTerm prim loc v -> Type loc v -> TyTerm prim loc v Source #
assertTypeE
loc term ty
constructs assertion of the type ty
to term
.
tyCaseE :: Type loc v -> loc -> TyTerm prim loc v -> [CaseAlt loc v (TyTerm prim loc v)] -> TyTerm prim loc v Source #
caseE
loc expr alts
constructs case alternatives expression.