{-# LANGUAGE PatternSynonyms #-}
module Data.Effect.Key where
import Data.Comp.Multi.HFunctor (HFunctor)
import Data.Effect (EffectF, EffectH)
newtype Key key (ins :: EffectF) a = Key {forall {k} (key :: k) (ins :: EffectF) a. Key key ins a -> ins a
unKey :: ins a}
deriving stock ((forall a b. (a -> b) -> Key key ins a -> Key key ins b)
-> (forall a b. a -> Key key ins b -> Key key ins a)
-> Functor (Key key ins)
forall k (key :: k) (ins :: EffectF) a b.
Functor ins =>
a -> Key key ins b -> Key key ins a
forall k (key :: k) (ins :: EffectF) a b.
Functor ins =>
(a -> b) -> Key key ins a -> Key key ins b
forall a b. a -> Key key ins b -> Key key ins a
forall a b. (a -> b) -> Key key ins a -> Key key ins b
forall (f :: EffectF).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall k (key :: k) (ins :: EffectF) a b.
Functor ins =>
(a -> b) -> Key key ins a -> Key key ins b
fmap :: forall a b. (a -> b) -> Key key ins a -> Key key ins b
$c<$ :: forall k (key :: k) (ins :: EffectF) a b.
Functor ins =>
a -> Key key ins b -> Key key ins a
<$ :: forall a b. a -> Key key ins b -> Key key ins a
Functor, (forall m. Monoid m => Key key ins m -> m)
-> (forall m a. Monoid m => (a -> m) -> Key key ins a -> m)
-> (forall m a. Monoid m => (a -> m) -> Key key ins a -> m)
-> (forall a b. (a -> b -> b) -> b -> Key key ins a -> b)
-> (forall a b. (a -> b -> b) -> b -> Key key ins a -> b)
-> (forall b a. (b -> a -> b) -> b -> Key key ins a -> b)
-> (forall b a. (b -> a -> b) -> b -> Key key ins a -> b)
-> (forall a. (a -> a -> a) -> Key key ins a -> a)
-> (forall a. (a -> a -> a) -> Key key ins a -> a)
-> (forall a. Key key ins a -> [a])
-> (forall a. Key key ins a -> Bool)
-> (forall a. Key key ins a -> Int)
-> (forall a. Eq a => a -> Key key ins a -> Bool)
-> (forall a. Ord a => Key key ins a -> a)
-> (forall a. Ord a => Key key ins a -> a)
-> (forall a. Num a => Key key ins a -> a)
-> (forall a. Num a => Key key ins a -> a)
-> Foldable (Key key ins)
forall a. Eq a => a -> Key key ins a -> Bool
forall a. Num a => Key key ins a -> a
forall a. Ord a => Key key ins a -> a
forall m. Monoid m => Key key ins m -> m
forall a. Key key ins a -> Bool
forall a. Key key ins a -> Int
forall a. Key key ins a -> [a]
forall a. (a -> a -> a) -> Key key ins a -> a
forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Eq a) =>
a -> Key key ins a -> Bool
forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Num a) =>
Key key ins a -> a
forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Ord a) =>
Key key ins a -> a
forall k (key :: k) (ins :: EffectF) m.
(Foldable ins, Monoid m) =>
Key key ins m -> m
forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
Key key ins a -> Bool
forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
Key key ins a -> Int
forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
Key key ins a -> [a]
forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
(a -> a -> a) -> Key key ins a -> a
forall k (key :: k) (ins :: EffectF) m a.
(Foldable ins, Monoid m) =>
(a -> m) -> Key key ins a -> m
forall k (key :: k) (ins :: EffectF) b a.
Foldable ins =>
(b -> a -> b) -> b -> Key key ins a -> b
forall k (key :: k) (ins :: EffectF) a b.
Foldable ins =>
(a -> b -> b) -> b -> Key key ins a -> b
forall m a. Monoid m => (a -> m) -> Key key ins a -> m
forall b a. (b -> a -> b) -> b -> Key key ins a -> b
forall a b. (a -> b -> b) -> b -> Key key ins 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
$cfold :: forall k (key :: k) (ins :: EffectF) m.
(Foldable ins, Monoid m) =>
Key key ins m -> m
fold :: forall m. Monoid m => Key key ins m -> m
$cfoldMap :: forall k (key :: k) (ins :: EffectF) m a.
(Foldable ins, Monoid m) =>
(a -> m) -> Key key ins a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Key key ins a -> m
$cfoldMap' :: forall k (key :: k) (ins :: EffectF) m a.
(Foldable ins, Monoid m) =>
(a -> m) -> Key key ins a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Key key ins a -> m
$cfoldr :: forall k (key :: k) (ins :: EffectF) a b.
Foldable ins =>
(a -> b -> b) -> b -> Key key ins a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Key key ins a -> b
$cfoldr' :: forall k (key :: k) (ins :: EffectF) a b.
Foldable ins =>
(a -> b -> b) -> b -> Key key ins a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Key key ins a -> b
$cfoldl :: forall k (key :: k) (ins :: EffectF) b a.
Foldable ins =>
(b -> a -> b) -> b -> Key key ins a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Key key ins a -> b
$cfoldl' :: forall k (key :: k) (ins :: EffectF) b a.
Foldable ins =>
(b -> a -> b) -> b -> Key key ins a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Key key ins a -> b
$cfoldr1 :: forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
(a -> a -> a) -> Key key ins a -> a
foldr1 :: forall a. (a -> a -> a) -> Key key ins a -> a
$cfoldl1 :: forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
(a -> a -> a) -> Key key ins a -> a
foldl1 :: forall a. (a -> a -> a) -> Key key ins a -> a
$ctoList :: forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
Key key ins a -> [a]
toList :: forall a. Key key ins a -> [a]
$cnull :: forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
Key key ins a -> Bool
null :: forall a. Key key ins a -> Bool
$clength :: forall k (key :: k) (ins :: EffectF) a.
Foldable ins =>
Key key ins a -> Int
length :: forall a. Key key ins a -> Int
$celem :: forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Eq a) =>
a -> Key key ins a -> Bool
elem :: forall a. Eq a => a -> Key key ins a -> Bool
$cmaximum :: forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Ord a) =>
Key key ins a -> a
maximum :: forall a. Ord a => Key key ins a -> a
$cminimum :: forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Ord a) =>
Key key ins a -> a
minimum :: forall a. Ord a => Key key ins a -> a
$csum :: forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Num a) =>
Key key ins a -> a
sum :: forall a. Num a => Key key ins a -> a
$cproduct :: forall k (key :: k) (ins :: EffectF) a.
(Foldable ins, Num a) =>
Key key ins a -> a
product :: forall a. Num a => Key key ins a -> a
Foldable, Functor (Key key ins)
Foldable (Key key ins)
(Functor (Key key ins), Foldable (Key key ins)) =>
(forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> Key key ins a -> f (Key key ins b))
-> (forall (f :: EffectF) a.
Applicative f =>
Key key ins (f a) -> f (Key key ins a))
-> (forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> Key key ins a -> m (Key key ins b))
-> (forall (m :: EffectF) a.
Monad m =>
Key key ins (m a) -> m (Key key ins a))
-> Traversable (Key key ins)
forall k (key :: k) (ins :: EffectF).
Traversable ins =>
Functor (Key key ins)
forall k (key :: k) (ins :: EffectF).
Traversable ins =>
Foldable (Key key ins)
forall k (key :: k) (ins :: EffectF) (m :: EffectF) a.
(Traversable ins, Monad m) =>
Key key ins (m a) -> m (Key key ins a)
forall k (key :: k) (ins :: EffectF) (f :: EffectF) a.
(Traversable ins, Applicative f) =>
Key key ins (f a) -> f (Key key ins a)
forall k (key :: k) (ins :: EffectF) (m :: EffectF) a b.
(Traversable ins, Monad m) =>
(a -> m b) -> Key key ins a -> m (Key key ins b)
forall k (key :: k) (ins :: EffectF) (f :: EffectF) a b.
(Traversable ins, Applicative f) =>
(a -> f b) -> Key key ins a -> f (Key key ins b)
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 =>
Key key ins (m a) -> m (Key key ins a)
forall (f :: EffectF) a.
Applicative f =>
Key key ins (f a) -> f (Key key ins a)
forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> Key key ins a -> m (Key key ins b)
forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> Key key ins a -> f (Key key ins b)
$ctraverse :: forall k (key :: k) (ins :: EffectF) (f :: EffectF) a b.
(Traversable ins, Applicative f) =>
(a -> f b) -> Key key ins a -> f (Key key ins b)
traverse :: forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> Key key ins a -> f (Key key ins b)
$csequenceA :: forall k (key :: k) (ins :: EffectF) (f :: EffectF) a.
(Traversable ins, Applicative f) =>
Key key ins (f a) -> f (Key key ins a)
sequenceA :: forall (f :: EffectF) a.
Applicative f =>
Key key ins (f a) -> f (Key key ins a)
$cmapM :: forall k (key :: k) (ins :: EffectF) (m :: EffectF) a b.
(Traversable ins, Monad m) =>
(a -> m b) -> Key key ins a -> m (Key key ins b)
mapM :: forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> Key key ins a -> m (Key key ins b)
$csequence :: forall k (key :: k) (ins :: EffectF) (m :: EffectF) a.
(Traversable ins, Monad m) =>
Key key ins (m a) -> m (Key key ins a)
sequence :: forall (m :: EffectF) a.
Monad m =>
Key key ins (m a) -> m (Key key ins a)
Traversable)
type (#>) = Key
infixr 7 #>
pattern K :: forall key ins a. ins a -> Key key ins a
pattern $mK :: forall {r} {k} {key :: k} {ins :: EffectF} {a}.
Key key ins a -> (ins a -> r) -> ((# #) -> r) -> r
$bK :: forall {k} (key :: k) (ins :: EffectF) a. ins a -> Key key ins a
K e = Key e
{-# COMPLETE K #-}
newtype KeyH key (sig :: EffectH) f a = KeyH {forall {k} (key :: k) (sig :: EffectH) (f :: EffectF) a.
KeyH key sig f a -> sig f a
unKeyH :: sig f a}
deriving stock ((forall a b. (a -> b) -> KeyH key sig f a -> KeyH key sig f b)
-> (forall a b. a -> KeyH key sig f b -> KeyH key sig f a)
-> Functor (KeyH key sig f)
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a b.
Functor (sig f) =>
a -> KeyH key sig f b -> KeyH key sig f a
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a b.
Functor (sig f) =>
(a -> b) -> KeyH key sig f a -> KeyH key sig f b
forall a b. a -> KeyH key sig f b -> KeyH key sig f a
forall a b. (a -> b) -> KeyH key sig f a -> KeyH key sig f b
forall (f :: EffectF).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a b.
Functor (sig f) =>
(a -> b) -> KeyH key sig f a -> KeyH key sig f b
fmap :: forall a b. (a -> b) -> KeyH key sig f a -> KeyH key sig f b
$c<$ :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a b.
Functor (sig f) =>
a -> KeyH key sig f b -> KeyH key sig f a
<$ :: forall a b. a -> KeyH key sig f b -> KeyH key sig f a
Functor, (forall m. Monoid m => KeyH key sig f m -> m)
-> (forall m a. Monoid m => (a -> m) -> KeyH key sig f a -> m)
-> (forall m a. Monoid m => (a -> m) -> KeyH key sig f a -> m)
-> (forall a b. (a -> b -> b) -> b -> KeyH key sig f a -> b)
-> (forall a b. (a -> b -> b) -> b -> KeyH key sig f a -> b)
-> (forall b a. (b -> a -> b) -> b -> KeyH key sig f a -> b)
-> (forall b a. (b -> a -> b) -> b -> KeyH key sig f a -> b)
-> (forall a. (a -> a -> a) -> KeyH key sig f a -> a)
-> (forall a. (a -> a -> a) -> KeyH key sig f a -> a)
-> (forall a. KeyH key sig f a -> [a])
-> (forall a. KeyH key sig f a -> Bool)
-> (forall a. KeyH key sig f a -> Int)
-> (forall a. Eq a => a -> KeyH key sig f a -> Bool)
-> (forall a. Ord a => KeyH key sig f a -> a)
-> (forall a. Ord a => KeyH key sig f a -> a)
-> (forall a. Num a => KeyH key sig f a -> a)
-> (forall a. Num a => KeyH key sig f a -> a)
-> Foldable (KeyH key sig f)
forall a. Eq a => a -> KeyH key sig f a -> Bool
forall a. Num a => KeyH key sig f a -> a
forall a. Ord a => KeyH key sig f a -> a
forall m. Monoid m => KeyH key sig f m -> m
forall a. KeyH key sig f a -> Bool
forall a. KeyH key sig f a -> Int
forall a. KeyH key sig f a -> [a]
forall a. (a -> a -> a) -> KeyH key sig f a -> a
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Eq a) =>
a -> KeyH key sig f a -> Bool
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Num a) =>
KeyH key sig f a -> a
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Ord a) =>
KeyH key sig f a -> a
forall k (key :: k) (sig :: EffectH) (f :: EffectF) m.
(Foldable (sig f), Monoid m) =>
KeyH key sig f m -> m
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
KeyH key sig f a -> Bool
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
KeyH key sig f a -> Int
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
KeyH key sig f a -> [a]
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
(a -> a -> a) -> KeyH key sig f a -> a
forall k (key :: k) (sig :: EffectH) (f :: EffectF) m a.
(Foldable (sig f), Monoid m) =>
(a -> m) -> KeyH key sig f a -> m
forall k (key :: k) (sig :: EffectH) (f :: EffectF) b a.
Foldable (sig f) =>
(b -> a -> b) -> b -> KeyH key sig f a -> b
forall k (key :: k) (sig :: EffectH) (f :: EffectF) a b.
Foldable (sig f) =>
(a -> b -> b) -> b -> KeyH key sig f a -> b
forall m a. Monoid m => (a -> m) -> KeyH key sig f a -> m
forall b a. (b -> a -> b) -> b -> KeyH key sig f a -> b
forall a b. (a -> b -> b) -> b -> KeyH key sig 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
$cfold :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) m.
(Foldable (sig f), Monoid m) =>
KeyH key sig f m -> m
fold :: forall m. Monoid m => KeyH key sig f m -> m
$cfoldMap :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) m a.
(Foldable (sig f), Monoid m) =>
(a -> m) -> KeyH key sig f a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> KeyH key sig f a -> m
$cfoldMap' :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) m a.
(Foldable (sig f), Monoid m) =>
(a -> m) -> KeyH key sig f a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> KeyH key sig f a -> m
$cfoldr :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a b.
Foldable (sig f) =>
(a -> b -> b) -> b -> KeyH key sig f a -> b
foldr :: forall a b. (a -> b -> b) -> b -> KeyH key sig f a -> b
$cfoldr' :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a b.
Foldable (sig f) =>
(a -> b -> b) -> b -> KeyH key sig f a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> KeyH key sig f a -> b
$cfoldl :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) b a.
Foldable (sig f) =>
(b -> a -> b) -> b -> KeyH key sig f a -> b
foldl :: forall b a. (b -> a -> b) -> b -> KeyH key sig f a -> b
$cfoldl' :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) b a.
Foldable (sig f) =>
(b -> a -> b) -> b -> KeyH key sig f a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> KeyH key sig f a -> b
$cfoldr1 :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
(a -> a -> a) -> KeyH key sig f a -> a
foldr1 :: forall a. (a -> a -> a) -> KeyH key sig f a -> a
$cfoldl1 :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
(a -> a -> a) -> KeyH key sig f a -> a
foldl1 :: forall a. (a -> a -> a) -> KeyH key sig f a -> a
$ctoList :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
KeyH key sig f a -> [a]
toList :: forall a. KeyH key sig f a -> [a]
$cnull :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
KeyH key sig f a -> Bool
null :: forall a. KeyH key sig f a -> Bool
$clength :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
Foldable (sig f) =>
KeyH key sig f a -> Int
length :: forall a. KeyH key sig f a -> Int
$celem :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Eq a) =>
a -> KeyH key sig f a -> Bool
elem :: forall a. Eq a => a -> KeyH key sig f a -> Bool
$cmaximum :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Ord a) =>
KeyH key sig f a -> a
maximum :: forall a. Ord a => KeyH key sig f a -> a
$cminimum :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Ord a) =>
KeyH key sig f a -> a
minimum :: forall a. Ord a => KeyH key sig f a -> a
$csum :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Num a) =>
KeyH key sig f a -> a
sum :: forall a. Num a => KeyH key sig f a -> a
$cproduct :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) a.
(Foldable (sig f), Num a) =>
KeyH key sig f a -> a
product :: forall a. Num a => KeyH key sig f a -> a
Foldable, Functor (KeyH key sig f)
Foldable (KeyH key sig f)
(Functor (KeyH key sig f), Foldable (KeyH key sig f)) =>
(forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> KeyH key sig f a -> f (KeyH key sig f b))
-> (forall (f :: EffectF) a.
Applicative f =>
KeyH key sig f (f a) -> f (KeyH key sig f a))
-> (forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> KeyH key sig f a -> m (KeyH key sig f b))
-> (forall (m :: EffectF) a.
Monad m =>
KeyH key sig f (m a) -> m (KeyH key sig f a))
-> Traversable (KeyH key sig f)
forall k (key :: k) (sig :: EffectH) (f :: EffectF).
Traversable (sig f) =>
Functor (KeyH key sig f)
forall k (key :: k) (sig :: EffectH) (f :: EffectF).
Traversable (sig f) =>
Foldable (KeyH key sig f)
forall k (key :: k) (sig :: EffectH) (f :: EffectF) (m :: EffectF)
a.
(Traversable (sig f), Monad m) =>
KeyH key sig f (m a) -> m (KeyH key sig f a)
forall k (key :: k) (sig :: EffectH) (f :: EffectF) (f :: EffectF)
a.
(Traversable (sig f), Applicative f) =>
KeyH key sig f (f a) -> f (KeyH key sig f a)
forall k (key :: k) (sig :: EffectH) (f :: EffectF) (m :: EffectF)
a b.
(Traversable (sig f), Monad m) =>
(a -> m b) -> KeyH key sig f a -> m (KeyH key sig f b)
forall k (key :: k) (sig :: EffectH) (f :: EffectF) (f :: EffectF)
a b.
(Traversable (sig f), Applicative f) =>
(a -> f b) -> KeyH key sig f a -> f (KeyH key sig f b)
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 =>
KeyH key sig f (m a) -> m (KeyH key sig f a)
forall (f :: EffectF) a.
Applicative f =>
KeyH key sig f (f a) -> f (KeyH key sig f a)
forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> KeyH key sig f a -> m (KeyH key sig f b)
forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> KeyH key sig f a -> f (KeyH key sig f b)
$ctraverse :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) (f :: EffectF)
a b.
(Traversable (sig f), Applicative f) =>
(a -> f b) -> KeyH key sig f a -> f (KeyH key sig f b)
traverse :: forall (f :: EffectF) a b.
Applicative f =>
(a -> f b) -> KeyH key sig f a -> f (KeyH key sig f b)
$csequenceA :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) (f :: EffectF)
a.
(Traversable (sig f), Applicative f) =>
KeyH key sig f (f a) -> f (KeyH key sig f a)
sequenceA :: forall (f :: EffectF) a.
Applicative f =>
KeyH key sig f (f a) -> f (KeyH key sig f a)
$cmapM :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) (m :: EffectF)
a b.
(Traversable (sig f), Monad m) =>
(a -> m b) -> KeyH key sig f a -> m (KeyH key sig f b)
mapM :: forall (m :: EffectF) a b.
Monad m =>
(a -> m b) -> KeyH key sig f a -> m (KeyH key sig f b)
$csequence :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) (m :: EffectF)
a.
(Traversable (sig f), Monad m) =>
KeyH key sig f (m a) -> m (KeyH key sig f a)
sequence :: forall (m :: EffectF) a.
Monad m =>
KeyH key sig f (m a) -> m (KeyH key sig f a)
Traversable)
deriving newtype ((forall (f :: EffectF) (g :: EffectF).
(f :-> g) -> KeyH key sig f :-> KeyH key sig g)
-> HFunctor (KeyH key sig)
forall k (key :: k) (sig :: EffectH) (f :: EffectF) (g :: EffectF).
HFunctor sig =>
(f :-> g) -> KeyH key sig f :-> KeyH key sig g
forall (f :: EffectF) (g :: EffectF).
(f :-> g) -> KeyH key sig f :-> KeyH key sig g
forall (h :: EffectH).
(forall (f :: EffectF) (g :: EffectF). (f :-> g) -> h f :-> h g)
-> HFunctor h
$chfmap :: forall k (key :: k) (sig :: EffectH) (f :: EffectF) (g :: EffectF).
HFunctor sig =>
(f :-> g) -> KeyH key sig f :-> KeyH key sig g
hfmap :: forall (f :: EffectF) (g :: EffectF).
(f :-> g) -> KeyH key sig f :-> KeyH key sig g
HFunctor)
type (##>) = KeyH
infixr 7 ##>
pattern KH :: forall key sig f a. sig f a -> KeyH key sig f a
pattern $mKH :: forall {r} {k} {key :: k} {sig :: EffectH} {f :: EffectF} {a}.
KeyH key sig f a -> (sig f a -> r) -> ((# #) -> r) -> r
$bKH :: forall {k} (key :: k) (sig :: EffectH) (f :: EffectF) a.
sig f a -> KeyH key sig f a
KH e = KeyH e
{-# COMPLETE KH #-}