{-# LANGUAGE PatternSynonyms #-}
module Data.Effect.Tag where
import Data.Comp.Multi.HFunctor (HFunctor)
import Data.Effect (EffectF, EffectH)
newtype Tag (ins :: EffectF) tag a = Tag {forall {k} (ins :: EffectF) (tag :: k) a. Tag ins tag a -> ins a
unTag :: ins a}
deriving stock ((forall a b. (a -> b) -> Tag ins tag a -> Tag ins tag b)
-> (forall a b. a -> Tag ins tag b -> Tag ins tag a)
-> Functor (Tag ins tag)
forall a b. a -> Tag ins tag b -> Tag ins tag a
forall a b. (a -> b) -> Tag ins tag a -> Tag ins tag b
forall (f :: EffectF).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
forall (ins :: EffectF) k (tag :: k) a b.
Functor ins =>
a -> Tag ins tag b -> Tag ins tag a
forall (ins :: EffectF) k (tag :: k) a b.
Functor ins =>
(a -> b) -> Tag ins tag a -> Tag ins tag b
$cfmap :: forall (ins :: EffectF) k (tag :: k) a b.
Functor ins =>
(a -> b) -> Tag ins tag a -> Tag ins tag b
fmap :: forall a b. (a -> b) -> Tag ins tag a -> Tag ins tag b
$c<$ :: forall (ins :: EffectF) k (tag :: k) a b.
Functor ins =>
a -> Tag ins tag b -> Tag ins tag a
<$ :: forall a b. a -> Tag ins tag b -> Tag ins tag a
Functor, (forall m. Monoid m => Tag ins tag m -> m)
-> (forall m a. Monoid m => (a -> m) -> Tag ins tag a -> m)
-> (forall m a. Monoid m => (a -> m) -> Tag ins tag a -> m)
-> (forall a b. (a -> b -> b) -> b -> Tag ins tag a -> b)
-> (forall a b. (a -> b -> b) -> b -> Tag ins tag a -> b)
-> (forall b a. (b -> a -> b) -> b -> Tag ins tag a -> b)
-> (forall b a. (b -> a -> b) -> b -> Tag ins tag a -> b)
-> (forall a. (a -> a -> a) -> Tag ins tag a -> a)
-> (forall a. (a -> a -> a) -> Tag ins tag a -> a)
-> (forall a. Tag ins tag a -> [a])
-> (forall a. Tag ins tag a -> Bool)
-> (forall a. Tag ins tag a -> Int)
-> (forall a. Eq a => a -> Tag ins tag a -> Bool)
-> (forall a. Ord a => Tag ins tag a -> a)
-> (forall a. Ord a => Tag ins tag a -> a)
-> (forall a. Num a => Tag ins tag a -> a)
-> (forall a. Num a => Tag ins tag a -> a)
-> Foldable (Tag ins tag)
forall a. Eq a => a -> Tag ins tag a -> Bool
forall a. Num a => Tag ins tag a -> a
forall a. Ord a => Tag ins tag a -> a
forall m. Monoid m => Tag ins tag m -> m
forall a. Tag ins tag a -> Bool
forall a. Tag ins tag a -> Int
forall a. Tag ins tag a -> [a]
forall a. (a -> a -> a) -> Tag ins tag a -> a
forall m a. Monoid m => (a -> m) -> Tag ins tag a -> m
forall b a. (b -> a -> b) -> b -> Tag ins tag a -> b
forall a b. (a -> b -> b) -> b -> Tag ins tag a -> b
forall (t :: EffectF).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Eq a) =>
a -> Tag ins tag a -> Bool
forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Num a) =>
Tag ins tag a -> a
forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Ord a) =>
Tag ins tag a -> a
forall (ins :: EffectF) k (tag :: k) m.
(Foldable ins, Monoid m) =>
Tag ins tag m -> m
forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
Tag ins tag a -> Bool
forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
Tag ins tag a -> Int
forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
Tag ins tag a -> [a]
forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
(a -> a -> a) -> Tag ins tag a -> a
forall (ins :: EffectF) k (tag :: k) m a.
(Foldable ins, Monoid m) =>
(a -> m) -> Tag ins tag a -> m
forall (ins :: EffectF) k (tag :: k) b a.
Foldable ins =>
(b -> a -> b) -> b -> Tag ins tag a -> b
forall (ins :: EffectF) k (tag :: k) a b.
Foldable ins =>
(a -> b -> b) -> b -> Tag ins tag a -> b
$cfold :: forall (ins :: EffectF) k (tag :: k) m.
(Foldable ins, Monoid m) =>
Tag ins tag m -> m
fold :: forall m. Monoid m => Tag ins tag m -> m
$cfoldMap :: forall (ins :: EffectF) k (tag :: k) m a.
(Foldable ins, Monoid m) =>
(a -> m) -> Tag ins tag a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Tag ins tag a -> m
$cfoldMap' :: forall (ins :: EffectF) k (tag :: k) m a.
(Foldable ins, Monoid m) =>
(a -> m) -> Tag ins tag a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Tag ins tag a -> m
$cfoldr :: forall (ins :: EffectF) k (tag :: k) a b.
Foldable ins =>
(a -> b -> b) -> b -> Tag ins tag a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Tag ins tag a -> b
$cfoldr' :: forall (ins :: EffectF) k (tag :: k) a b.
Foldable ins =>
(a -> b -> b) -> b -> Tag ins tag a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Tag ins tag a -> b
$cfoldl :: forall (ins :: EffectF) k (tag :: k) b a.
Foldable ins =>
(b -> a -> b) -> b -> Tag ins tag a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Tag ins tag a -> b
$cfoldl' :: forall (ins :: EffectF) k (tag :: k) b a.
Foldable ins =>
(b -> a -> b) -> b -> Tag ins tag a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Tag ins tag a -> b
$cfoldr1 :: forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
(a -> a -> a) -> Tag ins tag a -> a
foldr1 :: forall a. (a -> a -> a) -> Tag ins tag a -> a
$cfoldl1 :: forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
(a -> a -> a) -> Tag ins tag a -> a
foldl1 :: forall a. (a -> a -> a) -> Tag ins tag a -> a
$ctoList :: forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
Tag ins tag a -> [a]
toList :: forall a. Tag ins tag a -> [a]
$cnull :: forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
Tag ins tag a -> Bool
null :: forall a. Tag ins tag a -> Bool
$clength :: forall (ins :: EffectF) k (tag :: k) a.
Foldable ins =>
Tag ins tag a -> Int
length :: forall a. Tag ins tag a -> Int
$celem :: forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Eq a) =>
a -> Tag ins tag a -> Bool
elem :: forall a. Eq a => a -> Tag ins tag a -> Bool
$cmaximum :: forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Ord a) =>
Tag ins tag a -> a
maximum :: forall a. Ord a => Tag ins tag a -> a
$cminimum :: forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Ord a) =>
Tag ins tag a -> a
minimum :: forall a. Ord a => Tag ins tag a -> a
$csum :: forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Num a) =>
Tag ins tag a -> a
sum :: forall a. Num a => Tag ins tag a -> a
$cproduct :: forall (ins :: EffectF) k (tag :: k) a.
(Foldable ins, Num a) =>
Tag ins tag a -> a
product :: forall a. Num a => Tag ins tag a -> a
Foldable, Functor (Tag ins tag)
Foldable (Tag ins tag)
(Functor (Tag ins tag), Foldable (Tag ins tag)) =>
(forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> Tag ins tag a -> f (Tag ins tag b))
-> (forall (f :: EffectF) a.
Applicative f =>
Tag ins tag (f a) -> f (Tag ins tag a))
-> (forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> Tag ins tag a -> m (Tag ins tag b))
-> (forall (m :: EffectF) a.
Monad m =>
Tag ins tag (m a) -> m (Tag ins tag a))
-> Traversable (Tag ins tag)
forall (t :: EffectF).
(Functor t, Foldable t) =>
(forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: EffectF) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: EffectF) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (m :: EffectF) a.
Monad m =>
Tag ins tag (m a) -> m (Tag ins tag a)
forall (f :: EffectF) a.
Applicative f =>
Tag ins tag (f a) -> f (Tag ins tag a)
forall (ins :: EffectF) k (tag :: k).
Traversable ins =>
Functor (Tag ins tag)
forall (ins :: EffectF) k (tag :: k).
Traversable ins =>
Foldable (Tag ins tag)
forall (ins :: EffectF) k (tag :: k) (m :: EffectF) a.
(Traversable ins, Monad m) =>
Tag ins tag (m a) -> m (Tag ins tag a)
forall (ins :: EffectF) k (tag :: k) (f :: EffectF) a.
(Traversable ins, Applicative f) =>
Tag ins tag (f a) -> f (Tag ins tag a)
forall (ins :: EffectF) k (tag :: k) (m :: EffectF) a b.
(Traversable ins, Monad m) =>
(a -> m b) -> Tag ins tag a -> m (Tag ins tag b)
forall (ins :: EffectF) k (tag :: k) (f :: EffectF) a b.
(Traversable ins, Applicative f) =>
(a -> f b) -> Tag ins tag a -> f (Tag ins tag b)
forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> Tag ins tag a -> m (Tag ins tag b)
forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> Tag ins tag a -> f (Tag ins tag b)
$ctraverse :: forall (ins :: EffectF) k (tag :: k) (f :: EffectF) a b.
(Traversable ins, Applicative f) =>
(a -> f b) -> Tag ins tag a -> f (Tag ins tag b)
traverse :: forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> Tag ins tag a -> f (Tag ins tag b)
$csequenceA :: forall (ins :: EffectF) k (tag :: k) (f :: EffectF) a.
(Traversable ins, Applicative f) =>
Tag ins tag (f a) -> f (Tag ins tag a)
sequenceA :: forall (f :: EffectF) a.
Applicative f =>
Tag ins tag (f a) -> f (Tag ins tag a)
$cmapM :: forall (ins :: EffectF) k (tag :: k) (m :: EffectF) a b.
(Traversable ins, Monad m) =>
(a -> m b) -> Tag ins tag a -> m (Tag ins tag b)
mapM :: forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> Tag ins tag a -> m (Tag ins tag b)
$csequence :: forall (ins :: EffectF) k (tag :: k) (m :: EffectF) a.
(Traversable ins, Monad m) =>
Tag ins tag (m a) -> m (Tag ins tag a)
sequence :: forall (m :: EffectF) a.
Monad m =>
Tag ins tag (m a) -> m (Tag ins tag a)
Traversable)
type (#) = Tag
infixl 8 #
pattern T :: forall tag ins a. ins a -> Tag ins tag a
pattern $mT :: forall {r} {k} {tag :: k} {ins :: EffectF} {a}.
Tag ins tag a -> (ins a -> r) -> ((# #) -> r) -> r
$bT :: forall {k} (tag :: k) (ins :: EffectF) a. ins a -> Tag ins tag a
T e = Tag e
{-# COMPLETE T #-}
newtype TagH (sig :: EffectH) tag f a = TagH {forall {k} (sig :: EffectH) (tag :: k) (f :: EffectF) a.
TagH sig tag f a -> sig f a
unTagH :: sig f a}
deriving stock ((forall a b. (a -> b) -> TagH sig tag f a -> TagH sig tag f b)
-> (forall a b. a -> TagH sig tag f b -> TagH sig tag f a)
-> Functor (TagH sig tag f)
forall a b. a -> TagH sig tag f b -> TagH sig tag f a
forall a b. (a -> b) -> TagH sig tag f a -> TagH sig tag f b
forall (f :: EffectF).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a b.
Functor (sig f) =>
a -> TagH sig tag f b -> TagH sig tag f a
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a b.
Functor (sig f) =>
(a -> b) -> TagH sig tag f a -> TagH sig tag f b
$cfmap :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a b.
Functor (sig f) =>
(a -> b) -> TagH sig tag f a -> TagH sig tag f b
fmap :: forall a b. (a -> b) -> TagH sig tag f a -> TagH sig tag f b
$c<$ :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a b.
Functor (sig f) =>
a -> TagH sig tag f b -> TagH sig tag f a
<$ :: forall a b. a -> TagH sig tag f b -> TagH sig tag f a
Functor, (forall m. Monoid m => TagH sig tag f m -> m)
-> (forall m a. Monoid m => (a -> m) -> TagH sig tag f a -> m)
-> (forall m a. Monoid m => (a -> m) -> TagH sig tag f a -> m)
-> (forall a b. (a -> b -> b) -> b -> TagH sig tag f a -> b)
-> (forall a b. (a -> b -> b) -> b -> TagH sig tag f a -> b)
-> (forall b a. (b -> a -> b) -> b -> TagH sig tag f a -> b)
-> (forall b a. (b -> a -> b) -> b -> TagH sig tag f a -> b)
-> (forall a. (a -> a -> a) -> TagH sig tag f a -> a)
-> (forall a. (a -> a -> a) -> TagH sig tag f a -> a)
-> (forall a. TagH sig tag f a -> [a])
-> (forall a. TagH sig tag f a -> Bool)
-> (forall a. TagH sig tag f a -> Int)
-> (forall a. Eq a => a -> TagH sig tag f a -> Bool)
-> (forall a. Ord a => TagH sig tag f a -> a)
-> (forall a. Ord a => TagH sig tag f a -> a)
-> (forall a. Num a => TagH sig tag f a -> a)
-> (forall a. Num a => TagH sig tag f a -> a)
-> Foldable (TagH sig tag f)
forall a. Eq a => a -> TagH sig tag f a -> Bool
forall a. Num a => TagH sig tag f a -> a
forall a. Ord a => TagH sig tag f a -> a
forall m. Monoid m => TagH sig tag f m -> m
forall a. TagH sig tag f a -> Bool
forall a. TagH sig tag f a -> Int
forall a. TagH sig tag f a -> [a]
forall a. (a -> a -> a) -> TagH sig tag f a -> a
forall m a. Monoid m => (a -> m) -> TagH sig tag f a -> m
forall b a. (b -> a -> b) -> b -> TagH sig tag f a -> b
forall a b. (a -> b -> b) -> b -> TagH sig tag f a -> b
forall (t :: EffectF).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Eq a) =>
a -> TagH sig tag f a -> Bool
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Num a) =>
TagH sig tag f a -> a
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Ord a) =>
TagH sig tag f a -> a
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) m.
(Foldable (sig f), Monoid m) =>
TagH sig tag f m -> m
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
TagH sig tag f a -> Bool
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
TagH sig tag f a -> Int
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
TagH sig tag f a -> [a]
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
(a -> a -> a) -> TagH sig tag f a -> a
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) m a.
(Foldable (sig f), Monoid m) =>
(a -> m) -> TagH sig tag f a -> m
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) b a.
Foldable (sig f) =>
(b -> a -> b) -> b -> TagH sig tag f a -> b
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a b.
Foldable (sig f) =>
(a -> b -> b) -> b -> TagH sig tag f a -> b
$cfold :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) m.
(Foldable (sig f), Monoid m) =>
TagH sig tag f m -> m
fold :: forall m. Monoid m => TagH sig tag f m -> m
$cfoldMap :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) m a.
(Foldable (sig f), Monoid m) =>
(a -> m) -> TagH sig tag f a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> TagH sig tag f a -> m
$cfoldMap' :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) m a.
(Foldable (sig f), Monoid m) =>
(a -> m) -> TagH sig tag f a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> TagH sig tag f a -> m
$cfoldr :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a b.
Foldable (sig f) =>
(a -> b -> b) -> b -> TagH sig tag f a -> b
foldr :: forall a b. (a -> b -> b) -> b -> TagH sig tag f a -> b
$cfoldr' :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a b.
Foldable (sig f) =>
(a -> b -> b) -> b -> TagH sig tag f a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> TagH sig tag f a -> b
$cfoldl :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) b a.
Foldable (sig f) =>
(b -> a -> b) -> b -> TagH sig tag f a -> b
foldl :: forall b a. (b -> a -> b) -> b -> TagH sig tag f a -> b
$cfoldl' :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) b a.
Foldable (sig f) =>
(b -> a -> b) -> b -> TagH sig tag f a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> TagH sig tag f a -> b
$cfoldr1 :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
(a -> a -> a) -> TagH sig tag f a -> a
foldr1 :: forall a. (a -> a -> a) -> TagH sig tag f a -> a
$cfoldl1 :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
(a -> a -> a) -> TagH sig tag f a -> a
foldl1 :: forall a. (a -> a -> a) -> TagH sig tag f a -> a
$ctoList :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
TagH sig tag f a -> [a]
toList :: forall a. TagH sig tag f a -> [a]
$cnull :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
TagH sig tag f a -> Bool
null :: forall a. TagH sig tag f a -> Bool
$clength :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
Foldable (sig f) =>
TagH sig tag f a -> Int
length :: forall a. TagH sig tag f a -> Int
$celem :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Eq a) =>
a -> TagH sig tag f a -> Bool
elem :: forall a. Eq a => a -> TagH sig tag f a -> Bool
$cmaximum :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Ord a) =>
TagH sig tag f a -> a
maximum :: forall a. Ord a => TagH sig tag f a -> a
$cminimum :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Ord a) =>
TagH sig tag f a -> a
minimum :: forall a. Ord a => TagH sig tag f a -> a
$csum :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Num a) =>
TagH sig tag f a -> a
sum :: forall a. Num a => TagH sig tag f a -> a
$cproduct :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) a.
(Foldable (sig f), Num a) =>
TagH sig tag f a -> a
product :: forall a. Num a => TagH sig tag f a -> a
Foldable, Functor (TagH sig tag f)
Foldable (TagH sig tag f)
(Functor (TagH sig tag f), Foldable (TagH sig tag f)) =>
(forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> TagH sig tag f a -> f (TagH sig tag f b))
-> (forall (f :: EffectF) a.
Applicative f =>
TagH sig tag f (f a) -> f (TagH sig tag f a))
-> (forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> TagH sig tag f a -> m (TagH sig tag f b))
-> (forall (m :: EffectF) a.
Monad m =>
TagH sig tag f (m a) -> m (TagH sig tag f a))
-> Traversable (TagH sig tag f)
forall (t :: EffectF).
(Functor t, Foldable t) =>
(forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: EffectF) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: EffectF) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (m :: EffectF) a.
Monad m =>
TagH sig tag f (m a) -> m (TagH sig tag f a)
forall (f :: EffectF) a.
Applicative f =>
TagH sig tag f (f a) -> f (TagH sig tag f a)
forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> TagH sig tag f a -> m (TagH sig tag f b)
forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> TagH sig tag f a -> f (TagH sig tag f b)
forall (sig :: EffectH) k (tag :: k) (f :: EffectF).
Traversable (sig f) =>
Functor (TagH sig tag f)
forall (sig :: EffectH) k (tag :: k) (f :: EffectF).
Traversable (sig f) =>
Foldable (TagH sig tag f)
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (m :: EffectF)
a.
(Traversable (sig f), Monad m) =>
TagH sig tag f (m a) -> m (TagH sig tag f a)
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (f :: EffectF)
a.
(Traversable (sig f), Applicative f) =>
TagH sig tag f (f a) -> f (TagH sig tag f a)
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (m :: EffectF)
a b.
(Traversable (sig f), Monad m) =>
(a -> m b) -> TagH sig tag f a -> m (TagH sig tag f b)
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (f :: EffectF)
a b.
(Traversable (sig f), Applicative f) =>
(a -> f b) -> TagH sig tag f a -> f (TagH sig tag f b)
$ctraverse :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (f :: EffectF)
a b.
(Traversable (sig f), Applicative f) =>
(a -> f b) -> TagH sig tag f a -> f (TagH sig tag f b)
traverse :: forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> TagH sig tag f a -> f (TagH sig tag f b)
$csequenceA :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (f :: EffectF)
a.
(Traversable (sig f), Applicative f) =>
TagH sig tag f (f a) -> f (TagH sig tag f a)
sequenceA :: forall (f :: EffectF) a.
Applicative f =>
TagH sig tag f (f a) -> f (TagH sig tag f a)
$cmapM :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (m :: EffectF)
a b.
(Traversable (sig f), Monad m) =>
(a -> m b) -> TagH sig tag f a -> m (TagH sig tag f b)
mapM :: forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> TagH sig tag f a -> m (TagH sig tag f b)
$csequence :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (m :: EffectF)
a.
(Traversable (sig f), Monad m) =>
TagH sig tag f (m a) -> m (TagH sig tag f a)
sequence :: forall (m :: EffectF) a.
Monad m =>
TagH sig tag f (m a) -> m (TagH sig tag f a)
Traversable)
deriving newtype ((forall (f :: EffectF) (g :: EffectF).
(f :-> g) -> TagH sig tag f :-> TagH sig tag g)
-> HFunctor (TagH sig tag)
forall (f :: EffectF) (g :: EffectF).
(f :-> g) -> TagH sig tag f :-> TagH sig tag g
forall (h :: EffectH).
(forall (f :: EffectF) (g :: EffectF). (f :-> g) -> h f :-> h g)
-> HFunctor h
forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (g :: EffectF).
HFunctor sig =>
(f :-> g) -> TagH sig tag f :-> TagH sig tag g
$chfmap :: forall (sig :: EffectH) k (tag :: k) (f :: EffectF) (g :: EffectF).
HFunctor sig =>
(f :-> g) -> TagH sig tag f :-> TagH sig tag g
hfmap :: forall (f :: EffectF) (g :: EffectF).
(f :-> g) -> TagH sig tag f :-> TagH sig tag g
HFunctor)
type (##) = TagH
infixl 8 ##
pattern TH :: forall tag sig f a. sig f a -> TagH sig tag f a
pattern $mTH :: forall {r} {k} {tag :: k} {sig :: EffectH} {f :: EffectF} {a}.
TagH sig tag f a -> (sig f a -> r) -> ((# #) -> r) -> r
$bTH :: forall {k} (tag :: k) (sig :: EffectH) (f :: EffectF) a.
sig f a -> TagH sig tag f a
TH e = TagH e
{-# COMPLETE TH #-}