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

Safe HaskellNone
LanguageHaskell2010

Blanks.Scope

Synopsis

Documentation

newtype Scope n f a Source #

A simple wrapper for your expression functor that knows how to name-bind. See Blank for usage, and see the patterns in this module for easy manipulation and inspection.

Constructors

Scope 

Fields

Instances
Functor f => Monad (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

Methods

(>>=) :: Scope n f a -> (a -> Scope n f b) -> Scope n f b #

(>>) :: Scope n f a -> Scope n f b -> Scope n f b #

return :: a -> Scope n f a #

fail :: String -> Scope n f a #

Functor f => Functor (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

Methods

fmap :: (a -> b) -> Scope n f a -> Scope n f b #

(<$) :: a -> Scope n f b -> Scope n f a #

Functor f => Applicative (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

Methods

pure :: a -> Scope n f a #

(<*>) :: Scope n f (a -> b) -> Scope n f a -> Scope n f b #

liftA2 :: (a -> b -> c) -> Scope n f a -> Scope n f b -> Scope n f c #

(*>) :: Scope n f a -> Scope n f b -> Scope n f b #

(<*) :: Scope n f a -> Scope n f b -> Scope n f a #

Foldable f => Foldable (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

Methods

fold :: Monoid m => Scope n f m -> m #

foldMap :: Monoid m => (a -> m) -> Scope n f a -> m #

foldr :: (a -> b -> b) -> b -> Scope n f a -> b #

foldr' :: (a -> b -> b) -> b -> Scope n f a -> b #

foldl :: (b -> a -> b) -> b -> Scope n f a -> b #

foldl' :: (b -> a -> b) -> b -> Scope n f a -> b #

foldr1 :: (a -> a -> a) -> Scope n f a -> a #

foldl1 :: (a -> a -> a) -> Scope n f a -> a #

toList :: Scope n f a -> [a] #

null :: Scope n f a -> Bool #

length :: Scope n f a -> Int #

elem :: Eq a => a -> Scope n f a -> Bool #

maximum :: Ord a => Scope n f a -> a #

minimum :: Ord a => Scope n f a -> a #

sum :: Num a => Scope n f a -> a #

product :: Num a => Scope n f a -> a #

Traversable f => Traversable (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

Methods

traverse :: Applicative f0 => (a -> f0 b) -> Scope n f a -> f0 (Scope n f b) #

sequenceA :: Applicative f0 => Scope n f (f0 a) -> f0 (Scope n f a) #

mapM :: Monad m => (a -> m b) -> Scope n f a -> m (Scope n f b) #

sequence :: Monad m => Scope n f (m a) -> m (Scope n f a) #

Functor f => Blank (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

(Eq (f (Scope n f a)), Eq n, Eq a) => Eq (Scope n f a) Source # 
Instance details

Defined in Blanks.Scope

Methods

(==) :: Scope n f a -> Scope n f a -> Bool #

(/=) :: Scope n f a -> Scope n f a -> Bool #

(Show (f (Scope n f a)), Show n, Show a) => Show (Scope n f a) Source # 
Instance details

Defined in Blanks.Scope

Methods

showsPrec :: Int -> Scope n f a -> ShowS #

show :: Scope n f a -> String #

showList :: [Scope n f a] -> ShowS #

(NFData n, NFData a, NFData (f (Scope n f a))) => NFData (Scope n f a) Source # 
Instance details

Defined in Blanks.Scope

Methods

rnf :: Scope n f a -> () #

NatNewtype (ScopeW Identity n f (Scope n f)) (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

type BlankFunctor (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

type BlankFunctor (Scope n f) = f
type BlankInfo (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

type BlankInfo (Scope n f) = n
type BlankRight (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

type BlankLeft (Scope n f) Source # 
Instance details

Defined in Blanks.Scope

type BlankLeft (Scope n f) = Identity

pattern ScopeBound :: Int -> Scope n f a Source #

pattern ScopeFree :: a -> Scope n f a Source #

pattern ScopeBinder :: Int -> n -> Scope n f a -> Scope n f a Source #

pattern ScopeEmbed :: f (Scope n f a) -> Scope n f a Source #