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

Safe HaskellNone
LanguageHaskell2010

Blanks.Located

Synopsis

Documentation

newtype Colocated l a Source #

Because we defined a unique left adjoint, we have to define the unique right.

Constructors

Colocated 

Fields

Instances
MonadReader l (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Methods

ask :: Colocated l l #

local :: (l -> l) -> Colocated l a -> Colocated l a #

reader :: (l -> a) -> Colocated l a #

Monad (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Methods

(>>=) :: Colocated l a -> (a -> Colocated l b) -> Colocated l b #

(>>) :: Colocated l a -> Colocated l b -> Colocated l b #

return :: a -> Colocated l a #

fail :: String -> Colocated l a #

Functor (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Methods

fmap :: (a -> b) -> Colocated l a -> Colocated l b #

(<$) :: a -> Colocated l b -> Colocated l a #

Applicative (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Methods

pure :: a -> Colocated l a #

(<*>) :: Colocated l (a -> b) -> Colocated l a -> Colocated l b #

liftA2 :: (a -> b -> c) -> Colocated l a -> Colocated l b -> Colocated l c #

(*>) :: Colocated l a -> Colocated l b -> Colocated l b #

(<*) :: Colocated l a -> Colocated l b -> Colocated l a #

Distributive (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Methods

distribute :: Functor f => f (Colocated l a) -> Colocated l (f a) #

collect :: Functor f => (a -> Colocated l b) -> f a -> Colocated l (f b) #

distributeM :: Monad m => m (Colocated l a) -> Colocated l (m a) #

collectM :: Monad m => (a -> Colocated l b) -> m a -> Colocated l (m b) #

Representable (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Associated Types

type Rep (Colocated l) :: Type #

Methods

tabulate :: (Rep (Colocated l) -> a) -> Colocated l a #

index :: Colocated l a -> Rep (Colocated l) -> a #

Adjunction (Located l) (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Methods

unit :: a -> Colocated l (Located l a) #

counit :: Located l (Colocated l a) -> a #

leftAdjunct :: (Located l a -> b) -> a -> Colocated l b #

rightAdjunct :: (a -> Colocated l b) -> Located l a -> b #

type Rep (Colocated l) Source # 
Instance details

Defined in Blanks.Located

data Located l a Source #

This is basically the Env comonad, but with the env strict. It's also basically the Writer monad in certain contexts. We define a new, non-transforming datatype so we can pattern-match.

Constructors

Located 

Fields

Instances
Monoid l => MonadWriter l (Located l) Source # 
Instance details

Defined in Blanks.Located

Methods

writer :: (a, l) -> Located l a #

tell :: l -> Located l () #

listen :: Located l a -> Located l (a, l) #

pass :: Located l (a, l -> l) -> Located l a #

Monoid l => Monad (Located l) Source # 
Instance details

Defined in Blanks.Located

Methods

(>>=) :: Located l a -> (a -> Located l b) -> Located l b #

(>>) :: Located l a -> Located l b -> Located l b #

return :: a -> Located l a #

fail :: String -> Located l a #

Functor (Located l) Source # 
Instance details

Defined in Blanks.Located

Methods

fmap :: (a -> b) -> Located l a -> Located l b #

(<$) :: a -> Located l b -> Located l a #

Monoid l => Applicative (Located l) Source # 
Instance details

Defined in Blanks.Located

Methods

pure :: a -> Located l a #

(<*>) :: Located l (a -> b) -> Located l a -> Located l b #

liftA2 :: (a -> b -> c) -> Located l a -> Located l b -> Located l c #

(*>) :: Located l a -> Located l b -> Located l b #

(<*) :: Located l a -> Located l b -> Located l a #

Foldable (Located l) Source # 
Instance details

Defined in Blanks.Located

Methods

fold :: Monoid m => Located l m -> m #

foldMap :: Monoid m => (a -> m) -> Located l a -> m #

foldr :: (a -> b -> b) -> b -> Located l a -> b #

foldr' :: (a -> b -> b) -> b -> Located l a -> b #

foldl :: (b -> a -> b) -> b -> Located l a -> b #

foldl' :: (b -> a -> b) -> b -> Located l a -> b #

foldr1 :: (a -> a -> a) -> Located l a -> a #

foldl1 :: (a -> a -> a) -> Located l a -> a #

toList :: Located l a -> [a] #

null :: Located l a -> Bool #

length :: Located l a -> Int #

elem :: Eq a => a -> Located l a -> Bool #

maximum :: Ord a => Located l a -> a #

minimum :: Ord a => Located l a -> a #

sum :: Num a => Located l a -> a #

product :: Num a => Located l a -> a #

Traversable (Located l) Source # 
Instance details

Defined in Blanks.Located

Methods

traverse :: Applicative f => (a -> f b) -> Located l a -> f (Located l b) #

sequenceA :: Applicative f => Located l (f a) -> f (Located l a) #

mapM :: Monad m => (a -> m b) -> Located l a -> m (Located l b) #

sequence :: Monad m => Located l (m a) -> m (Located l a) #

Adjunction (Located l) (Colocated l) Source # 
Instance details

Defined in Blanks.Located

Methods

unit :: a -> Colocated l (Located l a) #

counit :: Located l (Colocated l a) -> a #

leftAdjunct :: (Located l a -> b) -> a -> Colocated l b #

rightAdjunct :: (a -> Colocated l b) -> Located l a -> b #

(Eq l, Eq a) => Eq (Located l a) Source # 
Instance details

Defined in Blanks.Located

Methods

(==) :: Located l a -> Located l a -> Bool #

(/=) :: Located l a -> Located l a -> Bool #

(Show l, Show a) => Show (Located l a) Source # 
Instance details

Defined in Blanks.Located

Methods

showsPrec :: Int -> Located l a -> ShowS #

show :: Located l a -> String #

showList :: [Located l a] -> ShowS #

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

Defined in Blanks.LocScope

colocated :: (l -> a) -> Colocated l a Source #

runColocated :: Colocated l a -> l -> a Source #