Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype Colocated l a = Colocated {
- unColocated :: Reader l a
- data Located l a = Located {
- locatedLoc :: !l
- locatedVal :: a
- askColocated :: Colocated l l
- colocated :: (l -> a) -> Colocated l a
- runColocated :: Colocated l a -> l -> a
Documentation
newtype Colocated l a Source #
Because we defined a unique left adjoint, we have to define the unique right.
Colocated | |
|
Instances
MonadReader l (Colocated l) Source # | |
Monad (Colocated l) Source # | |
Functor (Colocated l) Source # | |
Applicative (Colocated l) Source # | |
Defined in Blanks.Located | |
Distributive (Colocated l) Source # | |
Representable (Colocated l) Source # | |
Adjunction (Located l) (Colocated l) Source # | |
Defined in Blanks.Located | |
type Rep (Colocated l) Source # | |
Defined in Blanks.Located |
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.
Located | |
|
Instances
Monoid l => MonadWriter l (Located l) Source # | |
Monoid l => Monad (Located l) Source # | |
Functor (Located l) Source # | |
Monoid l => Applicative (Located l) Source # | |
Foldable (Located l) Source # | |
Defined in Blanks.Located 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] # 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 # | |
Traversable (Located l) Source # | |
Adjunction (Located l) (Colocated l) Source # | |
Defined in Blanks.Located | |
(Eq l, Eq a) => Eq (Located l a) Source # | |
(Show l, Show a) => Show (Located l a) Source # | |
Generic (Located l a) Source # | |
(NFData l, NFData a) => NFData (Located l a) Source # | |
Defined in Blanks.Located | |
NatNewtype (ScopeW (Located l) n f (LocScope l n f)) (LocScope l n f) Source # | |
Defined in Blanks.LocScope | |
type Rep (Located l a) Source # | |
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))) |
askColocated :: Colocated l l Source #
runColocated :: Colocated l a -> l -> a Source #