blanks-0.4.1: Fill-in-the-blanks - A library factoring out substitution from ASTs

Safe HaskellNone
LanguageHaskell2010

Blanks.ScopeW

Description

Internals. You'd need to newtype ScopeW to implement your own Blank.

Documentation

type ScopeC 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 #

Constructors

ScopeW 

Fields

Instances
(Functor t, Functor f, Functor g) => Functor (ScopeW t n f g) Source # 
Instance details

Defined in Blanks.ScopeW

Methods

fmap :: (a -> b) -> ScopeW t n f g a -> ScopeW t n f g b #

(<$) :: a -> ScopeW t n f g b -> ScopeW t n f g a #

(Foldable t, Foldable f, Foldable g) => Foldable (ScopeW t n f g) Source # 
Instance details

Defined in Blanks.ScopeW

Methods

fold :: Monoid m => ScopeW t n f g m -> 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 #

sum :: Num a => ScopeW t n f g a -> a #

product :: Num a => ScopeW t n f g a -> a #

(Traversable t, Traversable f, Traversable g) => Traversable (ScopeW t n f g) Source # 
Instance details

Defined in Blanks.ScopeW

Methods

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 # 
Instance details

Defined in Blanks.Scope

NatNewtype (ScopeW (Located l) n f (LocScope l n f)) (LocScope l n f) Source # 
Instance details

Defined in Blanks.LocScope

Eq (t (UnderScope n f (g a) a)) => Eq (ScopeW t n f g a) Source # 
Instance details

Defined in Blanks.ScopeW

Methods

(==) :: ScopeW t n f g a -> ScopeW t n f g a -> Bool #

(/=) :: ScopeW t n f g a -> ScopeW t n f g a -> Bool #

Show (t (UnderScope n f (g a) a)) => Show (ScopeW t n f g a) Source # 
Instance details

Defined in Blanks.ScopeW

Methods

showsPrec :: Int -> ScopeW t n f g a -> ShowS #

show :: ScopeW t n f g a -> String #

showList :: [ScopeW t n f g a] -> ShowS #

NFData (t (UnderScope n f (g a) a)) => NFData (ScopeW t n f g a) Source # 
Instance details

Defined in Blanks.ScopeW

Methods

rnf :: ScopeW t n f g a -> () #

type ScopeWRawFold n f g a r = UnderScopeFold n f (g a) a r Source #

type ScopeWFold u n f g a r = ScopeWRawFold n f g a (u r) Source #

scopeWFree :: ScopeC t u n f g => a -> u (g a) Source #

scopeWEmbed :: ScopeC t u n f g => f (g a) -> u (g a) Source #

scopeWAbstract :: (ScopeC t u n f g, Eq a) => n -> Seq a -> g a -> u (g a) Source #

scopeWUnAbstract :: ScopeC t u n f g => Seq a -> g a -> g a Source #

scopeWInstantiate :: ScopeC t u n f g => Seq (u (g a)) -> g a -> g a Source #

scopeWApply :: ScopeC t u n f g => Seq (u (g a)) -> g a -> Either SubError (g a) Source #

scopeWBind :: ScopeC t u n f g => (a -> u (g b)) -> g a -> g b Source #

scopeWBindOpt :: ScopeC t u n f g => (a -> Maybe (u (g a))) -> g a -> g a Source #

scopeWLift :: (ScopeC t u n f g, Monad u, Traversable f) => f a -> u (g a) Source #

scopeWRawFold :: (NatNewtype (ScopeW t n f g) g, Functor t) => ScopeWRawFold n f g a r -> g a -> t r Source #

scopeWFold :: (NatNewtype (ScopeW t n f g) g, Adjunction t u) => ScopeWFold u n f g a r -> g a -> r 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 :: ScopeC t u n f g => (t a -> t b) -> g a -> g b Source #