Safe Haskell | None |
---|---|
Language | Haskell2010 |
Internals.
Synopsis
- type ScopeWC t u n f g = (Adjunction t u, Applicative u, Functor f, NatNewtype (ScopeW t n f g) g)
- newtype ScopeW t n f g a = ScopeW {
- unScopeW :: t (UnderScope n f (g a) a)
- scopeWFree :: ScopeWC t u n f g => a -> u (g a)
- scopeWEmbed :: ScopeWC t u n f g => f (g a) -> u (g a)
- scopeWFromInnerBinder :: ScopeWC t u n f g => BinderScope n (g a) -> u (g a)
- scopeWInnerBinder :: (ScopeWC t u n f g, Eq a) => n -> Seq a -> g a -> BinderScope n (g a)
- scopeWInnerBinder1 :: (ScopeWC t u n f g, Eq a) => n -> a -> g a -> BinderScope n (g a)
- scopeWAbstract :: (ScopeWC t u n f g, Eq a) => n -> Seq a -> g a -> u (g a)
- scopeWAbstract1 :: (ScopeWC t u n f g, Eq a) => n -> a -> g a -> u (g a)
- scopeWUnAbstract :: ScopeWC t u n f g => Seq a -> g a -> g a
- scopeWUnAbstract1 :: ScopeWC t u n f g => a -> g a -> g a
- scopeWInstantiate :: ScopeWC t u n f g => Seq (u (g a)) -> g a -> g a
- scopeWInstantiate1 :: ScopeWC t u n f g => u (g a) -> g a -> g a
- scopeWApply :: ScopeWC t u n f g => Seq (u (g a)) -> g a -> Either SubError (g a)
- scopeWApply1 :: ScopeWC t u n f g => u (g a) -> g a -> Either SubError (g a)
- scopeWBind :: ScopeWC t u n f g => (a -> u (g b)) -> g a -> g b
- scopeWBindOpt :: ScopeWC t u n f g => (a -> Maybe (u (g a))) -> g a -> g a
- scopeWLift :: (ScopeWC t u n f g, Monad u, Traversable f) => f a -> u (g a)
- scopeWLiftAnno :: (NatNewtype (ScopeW t n f g) g, Functor t) => t a -> g a
- scopeWHoistAnno :: (NatNewtype (ScopeW t n f g) g, NatNewtype (ScopeW w n f h) h, Functor t, Functor w, Functor f) => (forall x. t x -> w x) -> g a -> h a
- scopeWMapAnno :: ScopeWC t u n f g => (t a -> t b) -> g a -> g b
Documentation
type ScopeWC t u n f g = (Adjunction t u, Applicative u, Functor f, NatNewtype (ScopeW t n f g) g) Source #
newtype ScopeW t n f g a Source #
The core internal scope type. (The "w" comes from "wrapper".)
We wrap up an UnderScope
in some functor and demand that we
unwrap it in an adjoint context. In the first case, these functors will be
Identity
, yielding the Scope
newtype. In the second case, these
functors will be Located
and Colocated
, yielding the LocScope
newtype.
ScopeW | |
|
Instances
(Functor t, Functor f, Functor g) => Functor (ScopeW t n f g) Source # | |
(Foldable t, Foldable f, Foldable g) => Foldable (ScopeW t n f g) Source # | |
Defined in Blanks.ScopeW fold :: Monoid m => ScopeW t n f g m -> m # foldMap :: Monoid m => (a -> m) -> ScopeW t n f g a -> m # foldMap' :: Monoid m => (a -> m) -> ScopeW t n f g a -> m # foldr :: (a -> b -> b) -> b -> ScopeW t n f g a -> b # foldr' :: (a -> b -> b) -> b -> ScopeW t n f g a -> b # foldl :: (b -> a -> b) -> b -> ScopeW t n f g a -> b # foldl' :: (b -> a -> b) -> b -> ScopeW t n f g a -> b # foldr1 :: (a -> a -> a) -> ScopeW t n f g a -> a # foldl1 :: (a -> a -> a) -> ScopeW t n f g a -> a # toList :: ScopeW t n f g a -> [a] # null :: ScopeW t n f g a -> Bool # length :: ScopeW t n f g a -> Int # elem :: Eq a => a -> ScopeW t n f g a -> Bool # maximum :: Ord a => ScopeW t n f g a -> a # minimum :: Ord a => ScopeW t n f g a -> a # | |
(Traversable t, Traversable f, Traversable g) => Traversable (ScopeW t n f g) Source # | |
Defined in Blanks.ScopeW traverse :: Applicative f0 => (a -> f0 b) -> ScopeW t n f g a -> f0 (ScopeW t n f g b) # sequenceA :: Applicative f0 => ScopeW t n f g (f0 a) -> f0 (ScopeW t n f g a) # mapM :: Monad m => (a -> m b) -> ScopeW t n f g a -> m (ScopeW t n f g b) # sequence :: Monad m => ScopeW t n f g (m a) -> m (ScopeW t n f g a) # | |
NatNewtype (ScopeW Identity n f (Scope n f)) (Scope n f) Source # | |
Defined in Blanks.Scope | |
NatNewtype (ScopeW (Located l) n f (LocScope l n f)) (LocScope l n f) Source # | |
Defined in Blanks.LocScope | |
Eq (t (UnderScope n f (g a) a)) => Eq (ScopeW t n f g a) Source # | |
Show (t (UnderScope n f (g a) a)) => Show (ScopeW t n f g a) Source # | |
NFData (t (UnderScope n f (g a) a)) => NFData (ScopeW t n f g a) Source # | |
Defined in Blanks.ScopeW |
scopeWFree :: ScopeWC t u n f g => a -> u (g a) Source #
scopeWEmbed :: ScopeWC t u n f g => f (g a) -> u (g a) Source #
scopeWFromInnerBinder :: ScopeWC t u n f g => BinderScope n (g a) -> u (g a) Source #
scopeWInnerBinder :: (ScopeWC t u n f g, Eq a) => n -> Seq a -> g a -> BinderScope n (g a) Source #
scopeWInnerBinder1 :: (ScopeWC t u n f g, Eq a) => n -> a -> g a -> BinderScope n (g a) Source #
scopeWAbstract1 :: (ScopeWC t u n f g, Eq a) => n -> a -> g a -> u (g a) Source #
scopeWUnAbstract :: ScopeWC t u n f g => Seq a -> g a -> g a Source #
scopeWUnAbstract1 :: ScopeWC t u n f g => a -> g a -> g a Source #
scopeWInstantiate :: ScopeWC t u n f g => Seq (u (g a)) -> g a -> g a Source #
scopeWInstantiate1 :: ScopeWC t u n f g => u (g a) -> g a -> g a Source #
scopeWBind :: ScopeWC t u n f g => (a -> u (g b)) -> g a -> g b Source #
scopeWBindOpt :: ScopeWC t u n f g => (a -> Maybe (u (g a))) -> g a -> g a Source #
scopeWLift :: (ScopeWC t u n f g, Monad u, Traversable f) => f a -> u (g a) Source #
scopeWLiftAnno :: (NatNewtype (ScopeW t n f g) g, Functor t) => t a -> g a Source #
scopeWHoistAnno :: (NatNewtype (ScopeW t n f g) g, NatNewtype (ScopeW w n f h) h, Functor t, Functor w, Functor f) => (forall x. t x -> w x) -> g a -> h a Source #
scopeWMapAnno :: ScopeWC t u n f g => (t a -> t b) -> g a -> g b Source #