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

Safe HaskellNone
LanguageHaskell2010

Blanks.Class

Documentation

class BlankAbstract (m :: * -> *) where Source #

Methods

blankFree :: a -> BlankCodomain m (m a) Source #

"free name"

blankAbstract :: Eq a => BlankInfo m -> Seq a -> m a -> BlankCodomain m (m a) Source #

"abstract info names body"

blankAbstract1 :: Eq a => BlankInfo m -> a -> m a -> BlankCodomain m (m a) Source #

blankAbstract for a single argument

blankUnAbstract :: Seq a -> m a -> m a Source #

"unAbstract names body"

blankUnAbstract1 :: a -> m a -> m a Source #

blankInstantiate :: Seq (BlankCodomain m (m a)) -> m a -> m a Source #

"instantiate args body"

blankInstantiate1 :: BlankCodomain m (m a) -> m a -> m a Source #

blankInstantiate for a single argument

blankApply :: Seq (BlankCodomain m (m a)) -> m a -> Either SubError (m a) Source #

"apply args abstraction"

blankApply1 :: BlankCodomain m (m a) -> m a -> Either SubError (m a) Source #

blankApply for a single argument

Instances
Functor f => BlankAbstract (PureScope n f) Source # 
Instance details

Defined in Blanks.PureScope

(RightAdjunctionApplicative t, Functor f) => BlankAbstract (ScopeT t n f) Source # 
Instance details

Defined in Blanks.ScopeT

Methods

blankFree :: a -> BlankCodomain (ScopeT t n f) (ScopeT t n f a) Source #

blankAbstract :: Eq a => BlankInfo (ScopeT t n f) -> Seq a -> ScopeT t n f a -> BlankCodomain (ScopeT t n f) (ScopeT t n f a) Source #

blankAbstract1 :: Eq a => BlankInfo (ScopeT t n f) -> a -> ScopeT t n f a -> BlankCodomain (ScopeT t n f) (ScopeT t n f a) Source #

blankUnAbstract :: Seq a -> ScopeT t n f a -> ScopeT t n f a Source #

blankUnAbstract1 :: a -> ScopeT t n f a -> ScopeT t n f a Source #

blankInstantiate :: Seq (BlankCodomain (ScopeT t n f) (ScopeT t n f a)) -> ScopeT t n f a -> ScopeT t n f a Source #

blankInstantiate1 :: BlankCodomain (ScopeT t n f) (ScopeT t n f a) -> ScopeT t n f a -> ScopeT t n f a Source #

blankApply :: Seq (BlankCodomain (ScopeT t n f) (ScopeT t n f a)) -> ScopeT t n f a -> Either SubError (ScopeT t n f a) Source #

blankApply1 :: BlankCodomain (ScopeT t n f) (ScopeT t n f a) -> ScopeT t n f a -> Either SubError (ScopeT t n f a) Source #

Functor f => BlankAbstract (LocScope l n f) Source # 
Instance details

Defined in Blanks.LocScope

Methods

blankFree :: a -> BlankCodomain (LocScope l n f) (LocScope l n f a) Source #

blankAbstract :: Eq a => BlankInfo (LocScope l n f) -> Seq a -> LocScope l n f a -> BlankCodomain (LocScope l n f) (LocScope l n f a) Source #

blankAbstract1 :: Eq a => BlankInfo (LocScope l n f) -> a -> LocScope l n f a -> BlankCodomain (LocScope l n f) (LocScope l n f a) Source #

blankUnAbstract :: Seq a -> LocScope l n f a -> LocScope l n f a Source #

blankUnAbstract1 :: a -> LocScope l n f a -> LocScope l n f a Source #

blankInstantiate :: Seq (BlankCodomain (LocScope l n f) (LocScope l n f a)) -> LocScope l n f a -> LocScope l n f a Source #

blankInstantiate1 :: BlankCodomain (LocScope l n f) (LocScope l n f a) -> LocScope l n f a -> LocScope l n f a Source #

blankApply :: Seq (BlankCodomain (LocScope l n f) (LocScope l n f a)) -> LocScope l n f a -> Either SubError (LocScope l n f a) Source #

blankApply1 :: BlankCodomain (LocScope l n f) (LocScope l n f a) -> LocScope l n f a -> Either SubError (LocScope l n f a) Source #

type family BlankCodomain (m :: * -> *) :: * -> * Source #

Instances
type BlankCodomain (PureScope n f) Source # 
Instance details

Defined in Blanks.PureScope

type BlankCodomain (ScopeT t n f) Source # 
Instance details

Defined in Blanks.ScopeT

type BlankCodomain (LocScope l n f) Source # 
Instance details

Defined in Blanks.LocScope

class BlankEmbed (m :: * -> *) where Source #

Methods

blankEmbed :: BlankFunctor m (m a) -> BlankCodomain m (m a) Source #

"embed functor"

Instances
Functor f => BlankEmbed (PureScope n f) Source # 
Instance details

Defined in Blanks.PureScope

RightAdjunction t => BlankEmbed (ScopeT t n f) Source # 
Instance details

Defined in Blanks.ScopeT

Methods

blankEmbed :: BlankFunctor (ScopeT t n f) (ScopeT t n f a) -> BlankCodomain (ScopeT t n f) (ScopeT t n f a) Source #

Functor f => BlankEmbed (LocScope l n f) Source # 
Instance details

Defined in Blanks.LocScope

Methods

blankEmbed :: BlankFunctor (LocScope l n f) (LocScope l n f a) -> BlankCodomain (LocScope l n f) (LocScope l n f a) Source #

type family BlankFunctor (m :: * -> *) :: * -> * Source #

Instances
type BlankFunctor (PureScope n f) Source # 
Instance details

Defined in Blanks.PureScope

type BlankFunctor (PureScope n f) = f
type BlankFunctor (ScopeT t n f) Source # 
Instance details

Defined in Blanks.ScopeT

type BlankFunctor (ScopeT t n f) = f
type BlankFunctor (LocScope l n f) Source # 
Instance details

Defined in Blanks.LocScope

type BlankFunctor (LocScope l n f) = f

type family BlankInfo (m :: * -> *) :: * Source #

Instances
type BlankInfo (PureScope n f) Source # 
Instance details

Defined in Blanks.PureScope

type BlankInfo (PureScope n f) = n
type BlankInfo (ScopeT t n f) Source # 
Instance details

Defined in Blanks.ScopeT

type BlankInfo (ScopeT t n f) = n
type BlankInfo (LocScope l n f) Source # 
Instance details

Defined in Blanks.LocScope

type BlankInfo (LocScope l n f) = n