blanks-0.5.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

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

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)

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

type Rep (Colocated l) = Rep (ReaderT l Identity)

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

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

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 #

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 #

Generic (Located l a) Source # 
Instance details

Defined in Blanks.Located

Associated Types

type Rep (Located l a) :: Type -> Type #

Methods

from :: Located l a -> Rep (Located l a) x #

to :: Rep (Located l a) x -> Located l a #

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

Defined in Blanks.Located

Methods

rnf :: Located l a -> () #

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

Defined in Blanks.LocScope

type Rep (Located l a) Source # 
Instance details

Defined in Blanks.Located

type Rep (Located l a) = D1 ('MetaData "Located" "Blanks.Located" "blanks-0.5.0-inplace" 'False) (C1 ('MetaCons "Located" 'PrefixI 'True) (S1 ('MetaSel ('Just "locatedLoc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 l) :*: S1 ('MetaSel ('Just "locatedVal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

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

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