Safe Haskell | None |
---|
- data TaggedClosure n
- = GBoundVal (Bound n) (TypeSum n)
- | GBoundRgnVar (Bound n)
- | GBoundRgnCon (Bound n)
- closureOfTagged :: TaggedClosure n -> Closure n
- closureOfTaggedSet :: Ord n => Set (TaggedClosure n) -> Closure n
- taggedClosureOfValBound :: (Ord n, Pretty n) => Bound n -> TaggedClosure n
- taggedClosureOfTyArg :: (Ord n, Pretty n) => Type n -> Set (TaggedClosure n)
- taggedClosureOfWeakClo :: (Ord n, Pretty n) => Closure n -> Maybe (Set (TaggedClosure n))
- maskFromTaggedSet :: Ord n => TypeSum n -> Set (TaggedClosure n) -> Set (TaggedClosure n)
- cutTaggedClosureX :: (Eq n, Ord n) => Bind n -> TaggedClosure n -> Maybe (TaggedClosure n)
- cutTaggedClosureXs :: (Eq n, Ord n) => [Bind n] -> TaggedClosure n -> Maybe (TaggedClosure n)
- cutTaggedClosureT :: (Eq n, Ord n) => Bind n -> TaggedClosure n -> Maybe (TaggedClosure n)
Documentation
data TaggedClosure n Source
A closure-term tagged with the bound variable that the term is due to.
GBoundVal (Bound n) (TypeSum n) | Term due to a free value variable. |
GBoundRgnVar (Bound n) | Term due to a free region variable. |
GBoundRgnCon (Bound n) | Term due to a region handle. |
LowerT TaggedClosure | |
Eq n => Eq (TaggedClosure n) | |
(Eq (TaggedClosure n), Ord n) => Ord (TaggedClosure n) | |
Show n => Show (TaggedClosure n) | |
(Eq n, Pretty n) => Pretty (TaggedClosure n) |
closureOfTagged :: TaggedClosure n -> Closure nSource
Convert a tagged clousure to a regular closure by dropping the tag variables.
closureOfTaggedSet :: Ord n => Set (TaggedClosure n) -> Closure nSource
Convert a set of tagged closures to a regular closure by dropping the tag variables.
taggedClosureOfValBound :: (Ord n, Pretty n) => Bound n -> TaggedClosure nSource
Yield the tagged closure of a value variable.
taggedClosureOfTyArg :: (Ord n, Pretty n) => Type n -> Set (TaggedClosure n)Source
Yield the tagged closure of a type argument.
taggedClosureOfWeakClo :: (Ord n, Pretty n) => Closure n -> Maybe (Set (TaggedClosure n))Source
Convert the closure provided as a weakclo
to tagged form.
Only terms of form `Use r` can be converted.
maskFromTaggedSet :: Ord n => TypeSum n -> Set (TaggedClosure n) -> Set (TaggedClosure n)Source
Mask a closure term from a tagged closure.
This is used for the forget
cast.
cutTaggedClosureX :: (Eq n, Ord n) => Bind n -> TaggedClosure n -> Maybe (TaggedClosure n)Source
Cut the terms due to the outermost binder from a tagged closure.
cutTaggedClosureXs :: (Eq n, Ord n) => [Bind n] -> TaggedClosure n -> Maybe (TaggedClosure n)Source
Like cutTaggedClosureX
but cut terms due to several binders.
cutTaggedClosureT :: (Eq n, Ord n) => Bind n -> TaggedClosure n -> Maybe (TaggedClosure n)Source
Cut the terms due to the outermost binder from a tagged closure.