hs-functors 0.1.1.0 → 0.1.2.0
raw patch · 8 files changed
+315/−1 lines, 8 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). Data.Foldable.Foldable (s (t m)) => Data.Foldable.Foldable (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). Data.Functor.Classes.Eq1 (s (t m)) => Data.Functor.Classes.Eq1 (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). Data.Functor.Classes.Ord1 (s (t m)) => Data.Functor.Classes.Ord1 (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). Data.Functor.Classes.Read1 (s (t m)) => Data.Functor.Classes.Read1 (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). Data.Functor.Classes.Show1 (s (t m)) => Data.Functor.Classes.Show1 (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). Data.Functor.Contravariant.Functor (s (t m)) => Data.Functor.Contravariant.Functor (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). Data.Traversable.Traversable (s (t m)) => Data.Traversable.Traversable (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). GHC.Base.Alternative (s (t m)) => GHC.Base.Alternative (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). GHC.Base.Applicative (s (t m)) => GHC.Base.Applicative (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). GHC.Base.Functor (s (t m)) => GHC.Base.Functor (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). GHC.Base.Monad (s (t m)) => GHC.Base.Monad (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k (s :: k -> * -> *) k1 (t :: k1 -> k) (m :: k1). GHC.Base.MonadPlus (s (t m)) => GHC.Base.MonadPlus (Control.Monad.Trans.Compose.ComposeT s t m)
- Control.Monad.Trans.Compose: instance forall k k1 (s :: k -> k1 -> *) k2 (t :: k2 -> k) (m :: k2) (a :: k1). Data.Semigroup.Semigroup (s (t m) a) => Data.Semigroup.Semigroup (Control.Monad.Trans.Compose.ComposeT s t m a)
- Control.Monad.Trans.Compose: instance forall k k1 (s :: k -> k1 -> *) k2 (t :: k2 -> k) (m :: k2) (a :: k1). GHC.Base.Monoid (s (t m) a) => GHC.Base.Monoid (Control.Monad.Trans.Compose.ComposeT s t m a)
- Control.Monad.Trans.Compose: instance forall k k1 (s :: k -> k1 -> *) k2 (t :: k2 -> k) (m :: k2) (a :: k1). GHC.Classes.Eq (s (t m) a) => GHC.Classes.Eq (Control.Monad.Trans.Compose.ComposeT s t m a)
- Control.Monad.Trans.Compose: instance forall k k1 (s :: k -> k1 -> *) k2 (t :: k2 -> k) (m :: k2) (a :: k1). GHC.Classes.Ord (s (t m) a) => GHC.Classes.Ord (Control.Monad.Trans.Compose.ComposeT s t m a)
- Control.Monad.Trans.Compose: instance forall k k1 (s :: k -> k1 -> *) k2 (t :: k2 -> k) (m :: k2) (a :: k1). GHC.Enum.Bounded (s (t m) a) => GHC.Enum.Bounded (Control.Monad.Trans.Compose.ComposeT s t m a)
- Control.Monad.Trans.Compose: instance forall k k1 (s :: k -> k1 -> *) k2 (t :: k2 -> k) (m :: k2) (a :: k1). GHC.Read.Read (s (t m) a) => GHC.Read.Read (Control.Monad.Trans.Compose.ComposeT s t m a)
- Control.Monad.Trans.Compose: instance forall k k1 (s :: k -> k1 -> *) k2 (t :: k2 -> k) (m :: k2) (a :: k1). GHC.Show.Show (s (t m) a) => GHC.Show.Show (Control.Monad.Trans.Compose.ComposeT s t m a)
- Control.Monad.Trans.Compose: instance forall k k1 k2 (s :: (k2 -> *) -> k1 -> *) (t :: (k -> *) -> k2 -> *). (Control.Monad.Morph.MFunctor s, Control.Monad.Morph.MFunctor t) => Control.Monad.Morph.MFunctor (Control.Monad.Trans.Compose.ComposeT s t)
+ Control.Comonad.Cofree: Cofree :: a -> (f (Cofree f a)) -> Cofree f a
+ Control.Comonad.Cofree: coiter :: Functor f => (a -> f a) -> a -> Cofree f a
+ Control.Comonad.Cofree: coiterW :: (Comonad ɯ, Functor f) => (ɯ a -> f (ɯ a)) -> ɯ a -> Cofree f a
+ Control.Comonad.Cofree: data Cofree f a
+ Control.Comonad.Cofree: instance (Data.Functor.Classes.Eq1 f, GHC.Classes.Eq a) => GHC.Classes.Eq (Control.Comonad.Cofree.Cofree f a)
+ Control.Comonad.Cofree: instance (Data.Functor.Classes.Ord1 f, GHC.Classes.Ord a) => GHC.Classes.Ord (Control.Comonad.Cofree.Cofree f a)
+ Control.Comonad.Cofree: instance (Data.Functor.Classes.Read1 f, GHC.Read.Read a) => GHC.Read.Read (Control.Comonad.Cofree.Cofree f a)
+ Control.Comonad.Cofree: instance (Data.Functor.Classes.Show1 f, GHC.Show.Show a) => GHC.Show.Show (Control.Comonad.Cofree.Cofree f a)
+ Control.Comonad.Cofree: instance Data.Cotraversable.Cotraversable f => Data.Cotraversable.Cotraversable (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance Data.Foldable.Foldable f => Data.Foldable.Foldable (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance Data.Functor.Classes.Eq1 f => Data.Functor.Classes.Eq1 (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance Data.Functor.Classes.Ord1 f => Data.Functor.Classes.Ord1 (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance Data.Functor.Classes.Read1 f => Data.Functor.Classes.Read1 (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance Data.Functor.Classes.Show1 f => Data.Functor.Classes.Show1 (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance Data.Traversable.Traversable f => Data.Traversable.Traversable (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance GHC.Base.Alternative f => GHC.Base.Applicative (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance GHC.Base.Alternative f => GHC.Base.Monad (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance GHC.Base.Functor f => Control.Comonad.Comonad (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: instance GHC.Base.Functor f => GHC.Base.Functor (Control.Comonad.Cofree.Cofree f)
+ Control.Comonad.Cofree: lower :: Functor ɯ => Cofree ɯ a -> ɯ a
+ Control.Comonad.Cofree: map :: Functor f => (forall a. f a -> g a) -> Cofree f a -> Cofree g a
+ Control.Comonad.Cofree: raise :: Comonad ɯ => ɯ a -> Cofree ɯ a
+ Control.Comonad.Cofree: unfold :: Functor f => (a -> (b, f a)) -> a -> Cofree f b
+ Control.Comonad.Cofree: unfoldM :: (Traversable f, Monad m) => (a -> m (b, f a)) -> a -> m (Cofree f b)
+ Control.Comonad.Cofree: unfoldW :: (Cotraversable f, Comonad ɯ) => (ɯ a -> (b, f a)) -> ɯ a -> Cofree f b
+ Control.Monad.Free: Free :: (f (Free f a)) -> Free f a
+ Control.Monad.Free: Pure :: a -> Free f a
+ Control.Monad.Free: data Free f a
+ Control.Monad.Free: fold :: Monad m => (forall a. f a -> m a) -> Free f a -> m a
+ Control.Monad.Free: instance (GHC.Classes.Eq a, Data.Functor.Classes.Eq1 f) => GHC.Classes.Eq (Control.Monad.Free.Free f a)
+ Control.Monad.Free: instance (GHC.Classes.Ord a, Data.Functor.Classes.Ord1 f) => GHC.Classes.Ord (Control.Monad.Free.Free f a)
+ Control.Monad.Free: instance (GHC.Read.Read a, Data.Functor.Classes.Read1 f) => GHC.Read.Read (Control.Monad.Free.Free f a)
+ Control.Monad.Free: instance (GHC.Show.Show a, Data.Functor.Classes.Show1 f) => GHC.Show.Show (Control.Monad.Free.Free f a)
+ Control.Monad.Free: instance Data.Foldable.Foldable f => Data.Foldable.Foldable (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance Data.Functor.Classes.Eq1 f => Data.Functor.Classes.Eq1 (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance Data.Functor.Classes.Ord1 f => Data.Functor.Classes.Ord1 (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance Data.Functor.Classes.Read1 f => Data.Functor.Classes.Read1 (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance Data.Functor.Classes.Show1 f => Data.Functor.Classes.Show1 (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance Data.Traversable.Traversable f => Data.Traversable.Traversable (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance GHC.Base.Functor f => GHC.Base.Applicative (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance GHC.Base.Functor f => GHC.Base.Functor (Control.Monad.Free.Free f)
+ Control.Monad.Free: instance GHC.Base.Functor f => GHC.Base.Monad (Control.Monad.Free.Free f)
+ Control.Monad.Free: iter :: Functor f => (f a -> a) -> Free f a -> a
+ Control.Monad.Free: iterA :: (Functor f, Applicative p) => (f (p a) -> p a) -> Free f a -> p a
+ Control.Monad.Free: lift :: Functor f => f a -> Free f a
+ Control.Monad.Free: map :: Functor g => (forall a. f a -> g a) -> Free f a -> Free g a
+ Control.Monad.Free: unfold :: Functor f => (b -> Either a (f b)) -> b -> Free f a
+ Control.Monad.Free: unfoldM :: (Traversable f, Monad m) => (b -> m (Either a (f b))) -> b -> m (Free f a)
+ Control.Monad.Free: unfoldW :: (Cotraversable f, Comonad ɯ) => (ɯ b -> Either a (f b)) -> ɯ b -> Free f a
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). Data.Foldable.Foldable (s (t m)) => Data.Foldable.Foldable (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). Data.Functor.Classes.Eq1 (s (t m)) => Data.Functor.Classes.Eq1 (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). Data.Functor.Classes.Ord1 (s (t m)) => Data.Functor.Classes.Ord1 (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). Data.Functor.Classes.Read1 (s (t m)) => Data.Functor.Classes.Read1 (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). Data.Functor.Classes.Show1 (s (t m)) => Data.Functor.Classes.Show1 (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). Data.Functor.Contravariant.Functor (s (t m)) => Data.Functor.Contravariant.Functor (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). Data.Traversable.Traversable (s (t m)) => Data.Traversable.Traversable (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). GHC.Base.Alternative (s (t m)) => GHC.Base.Alternative (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). GHC.Base.Applicative (s (t m)) => GHC.Base.Applicative (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). GHC.Base.Functor (s (t m)) => GHC.Base.Functor (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). GHC.Base.Monad (s (t m)) => GHC.Base.Monad (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 (s :: k1 -> * -> *) k2 (t :: k2 -> k1) (m :: k2). GHC.Base.MonadPlus (s (t m)) => GHC.Base.MonadPlus (Control.Monad.Trans.Compose.ComposeT s t m)
+ Control.Monad.Trans.Compose: instance forall k1 k2 (s :: k1 -> k2 -> *) k3 (t :: k3 -> k1) (m :: k3) (a :: k2). Data.Semigroup.Semigroup (s (t m) a) => Data.Semigroup.Semigroup (Control.Monad.Trans.Compose.ComposeT s t m a)
+ Control.Monad.Trans.Compose: instance forall k1 k2 (s :: k1 -> k2 -> *) k3 (t :: k3 -> k1) (m :: k3) (a :: k2). GHC.Base.Monoid (s (t m) a) => GHC.Base.Monoid (Control.Monad.Trans.Compose.ComposeT s t m a)
+ Control.Monad.Trans.Compose: instance forall k1 k2 (s :: k1 -> k2 -> *) k3 (t :: k3 -> k1) (m :: k3) (a :: k2). GHC.Classes.Eq (s (t m) a) => GHC.Classes.Eq (Control.Monad.Trans.Compose.ComposeT s t m a)
+ Control.Monad.Trans.Compose: instance forall k1 k2 (s :: k1 -> k2 -> *) k3 (t :: k3 -> k1) (m :: k3) (a :: k2). GHC.Classes.Ord (s (t m) a) => GHC.Classes.Ord (Control.Monad.Trans.Compose.ComposeT s t m a)
+ Control.Monad.Trans.Compose: instance forall k1 k2 (s :: k1 -> k2 -> *) k3 (t :: k3 -> k1) (m :: k3) (a :: k2). GHC.Enum.Bounded (s (t m) a) => GHC.Enum.Bounded (Control.Monad.Trans.Compose.ComposeT s t m a)
+ Control.Monad.Trans.Compose: instance forall k1 k2 (s :: k1 -> k2 -> *) k3 (t :: k3 -> k1) (m :: k3) (a :: k2). GHC.Read.Read (s (t m) a) => GHC.Read.Read (Control.Monad.Trans.Compose.ComposeT s t m a)
+ Control.Monad.Trans.Compose: instance forall k1 k2 (s :: k1 -> k2 -> *) k3 (t :: k3 -> k1) (m :: k3) (a :: k2). GHC.Show.Show (s (t m) a) => GHC.Show.Show (Control.Monad.Trans.Compose.ComposeT s t m a)
+ Control.Monad.Trans.Compose: instance forall k1 k2 k3 (s :: (k2 -> *) -> k3 -> *) (t :: (k1 -> *) -> k2 -> *). (Control.Monad.Morph.MFunctor s, Control.Monad.Morph.MFunctor t) => Control.Monad.Morph.MFunctor (Control.Monad.Trans.Compose.ComposeT s t)
+ Data.Bicotraversable: bicollect :: (Bicotraversable f, Functor g) => (a -> f b c) -> g a -> f (g b) (g c)
+ Data.Bicotraversable: bicosequence :: (Bicotraversable f, Functor g) => g (f a b) -> f (g a) (g b)
+ Data.Bicotraversable: bicotraverse :: (Bicotraversable f, Functor g) => (g a -> b) -> (g c -> d) -> g (f a c) -> f b d
+ Data.Bicotraversable: class Bifunctor f => Bicotraversable f
+ Data.Bicotraversable: instance Data.Bicotraversable.Bicotraversable (,)
+ Data.Bicotraversable: instance Data.Bicotraversable.Bicotraversable Data.Functor.Const.Const
+ Data.Bifunctor.Biff: Biff :: f a `s` g b -> Biff s f g a b
+ Data.Bifunctor.Biff: [unBiff] :: Biff s f g a b -> f a `s` g b
+ Data.Bifunctor.Biff: instance (Data.Bicotraversable.Bicotraversable s, Data.Cotraversable.Cotraversable f, Data.Cotraversable.Cotraversable g) => Data.Bicotraversable.Bicotraversable (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Bifoldable.Bifoldable s, Data.Foldable.Foldable f, Data.Foldable.Foldable g) => Data.Bifoldable.Bifoldable (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Bifunctor.Bifunctor s, GHC.Base.Functor f, GHC.Base.Functor g) => Data.Bifunctor.Bifunctor (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Bitraversable.Bitraversable s, Data.Traversable.Traversable f, Data.Traversable.Traversable g) => Data.Bitraversable.Bitraversable (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Eq2 s, Data.Functor.Classes.Eq1 f, Data.Functor.Classes.Eq1 g) => Data.Functor.Classes.Eq2 (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Eq2 s, Data.Functor.Classes.Eq1 f, Data.Functor.Classes.Eq1 g, GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Data.Bifunctor.Biff.Biff s f g a b)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Ord2 s, Data.Functor.Classes.Ord1 f, Data.Functor.Classes.Ord1 g) => Data.Functor.Classes.Ord2 (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Ord2 s, Data.Functor.Classes.Ord1 f, Data.Functor.Classes.Ord1 g, GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Data.Bifunctor.Biff.Biff s f g a b)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Read2 s, Data.Functor.Classes.Read1 f, Data.Functor.Classes.Read1 g) => Data.Functor.Classes.Read2 (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Read2 s, Data.Functor.Classes.Read1 f, Data.Functor.Classes.Read1 g, GHC.Read.Read a, GHC.Read.Read b) => GHC.Read.Read (Data.Bifunctor.Biff.Biff s f g a b)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Show2 s, Data.Functor.Classes.Show1 f, Data.Functor.Classes.Show1 g) => Data.Functor.Classes.Show2 (Data.Bifunctor.Biff.Biff s f g)
+ Data.Bifunctor.Biff: instance (Data.Functor.Classes.Show2 s, Data.Functor.Classes.Show1 f, Data.Functor.Classes.Show1 g, GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Bifunctor.Biff.Biff s f g a b)
+ Data.Bifunctor.Biff: instance forall k1 (s :: k1 -> * -> *) k2 (f :: k2 -> k1) (g :: * -> *) (a :: k2). (Data.Foldable.Foldable (s (f a)), Data.Foldable.Foldable g) => Data.Foldable.Foldable (Data.Bifunctor.Biff.Biff s f g a)
+ Data.Bifunctor.Biff: instance forall k1 (s :: k1 -> * -> *) k2 (f :: k2 -> k1) (g :: * -> *) (a :: k2). (GHC.Base.Functor (s (f a)), GHC.Base.Functor g) => GHC.Base.Functor (Data.Bifunctor.Biff.Biff s f g a)
+ Data.Bifunctor.Biff: instance forall k1 k2 (s :: k2 -> * -> *) (f :: k1 -> k2) (a :: k1) (g :: * -> *). (Data.Traversable.Traversable (s (f a)), Data.Traversable.Traversable g) => Data.Traversable.Traversable (Data.Bifunctor.Biff.Biff s f g a)
+ Data.Bifunctor.Biff: newtype Biff s f g a b
+ Data.Bifunctor.Tannen: Tannen :: f (s a b) -> Tannen f s a b
+ Data.Bifunctor.Tannen: [unTannen] :: Tannen f s a b -> f (s a b)
+ Data.Bifunctor.Tannen: instance (Data.Cotraversable.Cotraversable f, Data.Bicotraversable.Bicotraversable s) => Data.Bicotraversable.Bicotraversable (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance (Data.Foldable.Foldable f, Data.Bifoldable.Bifoldable s) => Data.Bifoldable.Bifoldable (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Eq1 f, Data.Functor.Classes.Eq2 s) => Data.Functor.Classes.Eq2 (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Eq1 f, Data.Functor.Classes.Eq2 s, GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Data.Bifunctor.Tannen.Tannen f s a b)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Ord1 f, Data.Functor.Classes.Ord2 s) => Data.Functor.Classes.Ord2 (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Ord1 f, Data.Functor.Classes.Ord2 s, GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Data.Bifunctor.Tannen.Tannen f s a b)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Read1 f, Data.Functor.Classes.Read2 s) => Data.Functor.Classes.Read2 (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Read1 f, Data.Functor.Classes.Read2 s, GHC.Read.Read a, GHC.Read.Read b) => GHC.Read.Read (Data.Bifunctor.Tannen.Tannen f s a b)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Show1 f, Data.Functor.Classes.Show2 s) => Data.Functor.Classes.Show2 (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance (Data.Functor.Classes.Show1 f, Data.Functor.Classes.Show2 s, GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Bifunctor.Tannen.Tannen f s a b)
+ Data.Bifunctor.Tannen: instance (Data.Traversable.Traversable f, Data.Bitraversable.Bitraversable s) => Data.Bitraversable.Bitraversable (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance (GHC.Base.Functor f, Data.Bifunctor.Bifunctor s) => Data.Bifunctor.Bifunctor (Data.Bifunctor.Tannen.Tannen f s)
+ Data.Bifunctor.Tannen: instance forall (f :: * -> *) k (s :: k -> * -> *) (a :: k). (Data.Foldable.Foldable (s a), Data.Foldable.Foldable f) => Data.Foldable.Foldable (Data.Bifunctor.Tannen.Tannen f s a)
+ Data.Bifunctor.Tannen: instance forall (f :: * -> *) k (s :: k -> * -> *) (a :: k). (GHC.Base.Functor (s a), GHC.Base.Functor f) => GHC.Base.Functor (Data.Bifunctor.Tannen.Tannen f s a)
+ Data.Bifunctor.Tannen: instance forall k (f :: * -> *) (s :: k -> * -> *) (a :: k). (Data.Traversable.Traversable f, Data.Traversable.Traversable (s a)) => Data.Traversable.Traversable (Data.Bifunctor.Tannen.Tannen f s a)
+ Data.Bifunctor.Tannen: newtype Tannen f s a b
+ Data.Fix: Fix :: f (Fix f) -> Fix f
+ Data.Fix: [unFix] :: Fix f -> f (Fix f)
+ Data.Fix: ana :: Functor f => (a -> f a) -> a -> Fix f
+ Data.Fix: anaM :: (Traversable f, Monad m) => (a -> m (f a)) -> a -> m (Fix f)
+ Data.Fix: anaW :: (Cotraversable f, Comonad ɯ) => (ɯ a -> f a) -> ɯ a -> Fix f
+ Data.Fix: cata :: Functor f => (f a -> a) -> Fix f -> a
+ Data.Fix: cataM :: (Traversable f, Monad m) => (f a -> m a) -> Fix f -> m a
+ Data.Fix: cataW :: (Cotraversable f, Comonad ɯ) => (ɯ (f a) -> a) -> ɯ (Fix f) -> a
+ Data.Fix: instance Data.Functor.Classes.Eq1 f => GHC.Classes.Eq (Data.Fix.Fix f)
+ Data.Fix: instance Data.Functor.Classes.Ord1 f => GHC.Classes.Ord (Data.Fix.Fix f)
+ Data.Fix: instance Data.Functor.Classes.Read1 f => GHC.Read.Read (Data.Fix.Fix f)
+ Data.Fix: instance Data.Functor.Classes.Show1 f => GHC.Show.Show (Data.Fix.Fix f)
+ Data.Fix: mapFix :: Functor f => (forall a. f a -> g a) -> Fix f -> Fix g
+ Data.Fix: newtype Fix f
+ Data.Functor.Join: Join :: p a a -> Join p a
+ Data.Functor.Join: [unJoin] :: Join p a -> p a a
+ Data.Functor.Join: instance (Data.Functor.Classes.Eq2 p, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Functor.Join.Join p a)
+ Data.Functor.Join: instance (Data.Functor.Classes.Ord2 p, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.Functor.Join.Join p a)
+ Data.Functor.Join: instance (Data.Functor.Classes.Read2 p, GHC.Read.Read a) => GHC.Read.Read (Data.Functor.Join.Join p a)
+ Data.Functor.Join: instance (Data.Functor.Classes.Show2 p, GHC.Show.Show a) => GHC.Show.Show (Data.Functor.Join.Join p a)
+ Data.Functor.Join: instance Data.Bicotraversable.Bicotraversable p => Data.Cotraversable.Cotraversable (Data.Functor.Join.Join p)
+ Data.Functor.Join: instance Data.Bifoldable.Bifoldable p => Data.Foldable.Foldable (Data.Functor.Join.Join p)
+ Data.Functor.Join: instance Data.Bifunctor.Bifunctor p => GHC.Base.Functor (Data.Functor.Join.Join p)
+ Data.Functor.Join: instance Data.Bitraversable.Bitraversable p => Data.Traversable.Traversable (Data.Functor.Join.Join p)
+ Data.Functor.Join: instance Data.Functor.Classes.Eq2 p => Data.Functor.Classes.Eq1 (Data.Functor.Join.Join p)
+ Data.Functor.Join: instance Data.Functor.Classes.Ord2 p => Data.Functor.Classes.Ord1 (Data.Functor.Join.Join p)
+ Data.Functor.Join: instance Data.Functor.Classes.Read2 p => Data.Functor.Classes.Read1 (Data.Functor.Join.Join p)
+ Data.Functor.Join: instance Data.Functor.Classes.Show2 p => Data.Functor.Classes.Show1 (Data.Functor.Join.Join p)
+ Data.Functor.Join: newtype Join p a
- Control.Comonad: class Functor ɯ => Comonad ɯ where cut = (<<=) id (<<=) f = fmap f . cut
+ Control.Comonad: class Functor ɯ => Comonad ɯ
- Control.Monad.Morph: class (MonadTrans t, MFunctor t) => MMonad t where mjoin = mbind id mbind f = mjoin . mmap f
+ Control.Monad.Morph: class (MonadTrans t, MFunctor t) => MMonad t
- Data.Cotraversable: class Functor f => Cotraversable f where collect f = cosequence . fmap f cosequence = collect id cotraverse f = fmap f . cosequence
+ Data.Cotraversable: class Functor f => Cotraversable f
- Data.Functor.Contravariant: class Functor f where (>$) = gmap . const
+ Data.Functor.Contravariant: class Functor f
- Data.Profunctor: class Profunctor p => Costrong f p where costrongL = costrongR . dimap braid braid costrongR = costrongL . dimap braid braid
+ Data.Profunctor: class Profunctor p => Costrong f p
- Data.Profunctor: class Profunctor p where dimap f g = lmap f . rmap g lmap f = dimap f id rmap g = dimap id g
+ Data.Profunctor: class Profunctor p
Files
- Control/Comonad/Cofree.hs +76/−0
- Control/Monad/Free.hs +81/−0
- Data/Bicotraversable.hs +21/−0
- Data/Bifunctor/Biff.hs +34/−0
- Data/Bifunctor/Tannen.hs +29/−0
- Data/Fix.hs +39/−0
- Data/Functor/Join.hs +23/−0
- hs-functors.cabal +12/−1
+ Control/Comonad/Cofree.hs view
@@ -0,0 +1,76 @@+module Control.Comonad.Cofree where++import Prelude hiding ((.), id, map)++import Control.Applicative+import Control.Category+import Control.Comonad+import Control.Monad+import Data.Cotraversable+import Data.Functor.Classes+import Data.Profunctor+import Data.Semigroup ((<>))+import Text.Read (Read (..))++data Cofree f a = Cofree a (f (Cofree f a))+ deriving (Functor, Foldable, Traversable)++instance Alternative f => Applicative (Cofree f) where+ pure = flip Cofree empty+ (<*>) = ap++instance Alternative f => Monad (Cofree f) where+ x >>= f = join (f <$> x) where join (Cofree (Cofree a s) t) = Cofree a (s <|> join <$> t)++instance Functor f => Comonad (Cofree f) where+ copure (Cofree a _) = a+ cut ɯ@(Cofree _ t) = Cofree ɯ (cut <$> t)++instance Cotraversable f => Cotraversable (Cofree f) where+ cosequence = Cofree <$> fmap (\ (Cofree a _) -> a)+ <*> fmap cosequence . collect (\ (Cofree _ t) -> t)++instance Eq1 f => Eq1 (Cofree f) where+ liftEq (==) (Cofree a s) (Cofree b t) = a == b && (liftEq . liftEq) (==) s t++instance Ord1 f => Ord1 (Cofree f) where+ liftCompare cmp (Cofree a s) (Cofree b t) = a `cmp` b <> (liftCompare . liftCompare) cmp s t++instance Read1 f => Read1 (Cofree f) where+ liftReadPrec rp rl =+ readBinaryWith rp (liftReadPrec (liftReadPrec rp rl)+ (liftReadListPrec rp rl)) "Cofree" Cofree++instance Show1 f => Show1 (Cofree f) where+ liftShowsPrec sp sl n (Cofree a t) =+ showsBinaryWith sp (liftShowsPrec (liftShowsPrec sp sl)+ (liftShowList sp sl)) "Cofree" n a t++instance (Eq1 f, Eq a) => Eq (Cofree f a) where (==) = eq1+instance (Ord1 f, Ord a) => Ord (Cofree f a) where compare = compare1+instance (Read1 f, Read a) => Read (Cofree f a) where readPrec = readPrec1+instance (Show1 f, Show a) => Show (Cofree f a) where showsPrec = showsPrec1++raise :: Comonad ɯ => ɯ a -> Cofree ɯ a+raise = liftA2 Cofree copure (raise <<=)++lower :: Functor ɯ => Cofree ɯ a -> ɯ a+lower (Cofree _ t) = copure <$> t++coiter :: Functor f => (a -> f a) -> a -> Cofree f a+coiter f = unfold (id &&& f)++coiterW :: (Comonad ɯ, Functor f) => (ɯ a -> f (ɯ a)) -> ɯ a -> Cofree f a+coiterW f ɯ = copure ɯ `Cofree` (coiterW f <$> f ɯ)++unfold :: Functor f => (a -> (b, f a)) -> a -> Cofree f b+unfold f = f >>> \ (b, af) -> Cofree b (unfold f <$> af)++unfoldM :: (Traversable f, Monad m) => (a -> m (b, f a)) -> a -> m (Cofree f b)+unfoldM f = f >=> \ (b, af) -> Cofree b <$> unfoldM f `traverse` af++unfoldW :: (Cotraversable f, Comonad ɯ) => (ɯ a -> (b, f a)) -> ɯ a -> Cofree f b+unfoldW f = f =>= \ ɯ -> Cofree (fst (copure ɯ)) (unfoldW f `cotraverse` (snd <$> ɯ))++map :: Functor f => (∀ a . f a -> g a) -> Cofree f a -> Cofree g a+map f (Cofree a t) = Cofree a (f (map f <$> t))
+ Control/Monad/Free.hs view
@@ -0,0 +1,81 @@+module Control.Monad.Free where++import Prelude hiding (map)++import Control.Applicative+import Control.Comonad+import Control.Monad+import Data.Cotraversable+import Data.Functor.Classes++data Free f a = Pure a | Free (f (Free f a))+ deriving (Functor, Foldable, Traversable)++instance Functor f => Applicative (Free f) where+ pure = Pure+ Pure a <*> Pure b = Pure (a b)+ Pure a <*> Free t = Free (fmap a <$> t)+ Free s <*> y = Free ((<*> y) <$> s)++instance Functor f => Monad (Free f) where+ Pure a >>= f = f a+ Free t >>= f = Free ((>>= f) <$> t)++instance Eq1 f => Eq1 (Free f) where+ liftEq (==) = (≡)+ where Pure a ≡ Pure b = a == b+ Free s ≡ Free t = liftEq (≡) s t+ _ ≡ _ = False++instance Ord1 f => Ord1 (Free f) where+ liftCompare compare = cmp+ where Pure a `cmp` Pure b = a `compare` b+ Pure _ `cmp` Free _ = LT+ Free _ `cmp` Pure _ = GT+ Free s `cmp` Free t = liftCompare cmp s t++instance Read1 f => Read1 (Free f) where+ liftReadPrec rp rl =+ readUnaryWith rp "Pure" Pure <|>+ readUnaryWith (liftReadPrec (liftReadPrec rp rl)+ (liftReadListPrec rp rl)) "Free" Free++instance Show1 f => Show1 (Free f) where+ liftShowsPrec sp sl n = \ case+ Pure a -> showsUnaryWith sp "Pure" n a+ Free t -> showsUnaryWith (liftShowsPrec (liftShowsPrec sp sl)+ (liftShowList sp sl)) "Free" n t++instance (Eq a, Eq1 f) => Eq (Free f a) where (==) = liftEq (==)+instance (Ord a, Ord1 f) => Ord (Free f a) where compare = liftCompare compare+instance (Read a, Read1 f) => Read (Free f a) where readsPrec = readsPrec1+instance (Show a, Show1 f) => Show (Free f a) where showsPrec = showsPrec1++lift :: Functor f => f a -> Free f a+lift = Free . fmap Pure++map :: Functor g => (∀ a . f a -> g a) -> Free f a -> Free g a+map _ (Pure a) = Pure a+map f (Free t) = Free (map f <$> f t)++fold :: Monad m => (∀ a . f a -> m a) -> Free f a -> m a+fold _ (Pure a) = pure a+fold f (Free t) = f t >>= fold f++iter :: Functor f => (f a -> a) -> Free f a -> a+iter _ (Pure a) = a+iter f (Free t) = f (iter f <$> t)++iterA :: (Functor f, Applicative p) => (f (p a) -> p a) -> Free f a -> p a+iterA _ (Pure a) = pure a+iterA f (Free t) = f (iterA f <$> t)++unfold :: Functor f => (b -> Either a (f b)) -> b -> Free f a+unfold f = either Pure (Free . fmap (unfold f)) . f++unfoldM :: (Traversable f, Monad m) => (b -> m (Either a (f b))) -> b -> m (Free f a)+unfoldM f = f >=> either (pure . pure) (fmap Free . traverse (unfoldM f))++unfoldW :: (Cotraversable f, Comonad ɯ) => (ɯ b -> Either a (f b)) -> ɯ b -> Free f a+unfoldW f ɯ = case f ɯ of Left a -> Pure a+ Right bf -> Free (unfoldW f `cotraverse` (bf <$ ɯ))
+ Data/Bicotraversable.hs view
@@ -0,0 +1,21 @@+module Data.Bicotraversable where++import Control.Arrow+import Data.Bifunctor+import Data.Functor.Const++class Bifunctor f => Bicotraversable f where+ bicollect :: Functor g => (a -> f b c) -> g a -> f (g b) (g c)+ bicollect f = bicosequence . fmap f++ bicosequence :: Functor g => g (f a b) -> f (g a) (g b)+ bicosequence = bicotraverse id id++ bicotraverse :: Functor g => (g a -> b) -> (g c -> d) -> g (f a c) -> f b d+ bicotraverse f g = bimap f g . bicosequence++instance Bicotraversable (,) where+ bicotraverse f g = f . fmap fst &&& g . fmap snd++instance Bicotraversable Const where+ bicotraverse f _ = Const . f . fmap getConst
+ Data/Bifunctor/Biff.hs view
@@ -0,0 +1,34 @@+module Data.Bifunctor.Biff where++import Data.Bifunctor+import Data.Bifoldable+import Data.Bitraversable+import Data.Bicotraversable+import Data.Cotraversable+import Data.Functor.Classes+import Text.Read (Read (..))++newtype Biff s f g a b = Biff { unBiff :: f a `s` g b }+ deriving (Functor, Foldable)+instance (Traversable (s (f a)), Traversable g) => Traversable (Biff s f g a) where+ traverse f = fmap Biff . (traverse . traverse) f . unBiff+instance (Eq2 s, Eq1 f, Eq1 g, Eq a, Eq b) => Eq (Biff s f g a b) where (==) = eq2+instance (Ord2 s, Ord1 f, Ord1 g, Ord a, Ord b) => Ord (Biff s f g a b) where compare = compare2+instance (Read2 s, Read1 f, Read1 g, Read a, Read b) => Read (Biff s f g a b) where readPrec = readPrec2+instance (Show2 s, Show1 f, Show1 g, Show a, Show b) => Show (Biff s f g a b) where showsPrec = showsPrec2+instance (Eq2 s, Eq1 f, Eq1 g) => Eq2 (Biff s f g) where+ liftEq2 f g (Biff x) (Biff y) = liftEq2 (liftEq f) (liftEq g) x y+instance (Ord2 s, Ord1 f, Ord1 g) => Ord2 (Biff s f g) where+ liftCompare2 f g (Biff x) (Biff y) = liftCompare2 (liftCompare f) (liftCompare g) x y+instance (Read2 s, Read1 f, Read1 g) => Read2 (Biff s f g) where+ liftReadPrec2 f fs g gs = Biff <$> liftReadPrec2 (liftReadPrec f fs) (liftReadListPrec f fs) (liftReadPrec g gs) (liftReadListPrec g gs)+instance (Show2 s, Show1 f, Show1 g) => Show2 (Biff s f g) where+ liftShowsPrec2 f fs g gs n = liftShowsPrec2 (liftShowsPrec f fs) (liftShowList f fs) (liftShowsPrec g gs) (liftShowList g gs) n . unBiff+instance (Bifunctor s, Functor f, Functor g) => Bifunctor (Biff s f g) where+ bimap f g = Biff . bimap (fmap f) (fmap g) . unBiff+instance (Bifoldable s, Foldable f, Foldable g) => Bifoldable (Biff s f g) where+ bifoldMap f g = bifoldMap (foldMap f) (foldMap g) . unBiff+instance (Bitraversable s, Traversable f, Traversable g) => Bitraversable (Biff s f g) where+ bitraverse f g = fmap Biff . bitraverse (traverse f) (traverse g) . unBiff+instance (Bicotraversable s, Cotraversable f, Cotraversable g) => Bicotraversable (Biff s f g) where+ bicotraverse f g = Biff . bicotraverse (cotraverse f) (cotraverse g) . fmap unBiff
+ Data/Bifunctor/Tannen.hs view
@@ -0,0 +1,29 @@+module Data.Bifunctor.Tannen where++import Data.Bifunctor+import Data.Bifoldable+import Data.Bitraversable+import Data.Bicotraversable+import Data.Cotraversable+import Data.Functor.Classes+import Text.Read (Read (..))++newtype Tannen f s a b = Tannen { unTannen :: f (s a b) }+ deriving (Functor, Foldable)+deriving instance (Traversable f, Traversable (s a)) => Traversable (Tannen f s a)+instance (Eq1 f, Eq2 s, Eq a, Eq b) => Eq (Tannen f s a b) where (==) = eq2+instance (Ord1 f, Ord2 s, Ord a, Ord b) => Ord (Tannen f s a b) where compare = compare2+instance (Read1 f, Read2 s, Read a, Read b) => Read (Tannen f s a b) where readPrec = readPrec2+instance (Show1 f, Show2 s, Show a, Show b) => Show (Tannen f s a b) where showsPrec = showsPrec2+instance (Eq1 f, Eq2 s) => Eq2 (Tannen f s) where liftEq2 f g (Tannen x) (Tannen y) = liftEq (liftEq2 f g) x y+instance (Ord1 f, Ord2 s) => Ord2 (Tannen f s) where liftCompare2 f g (Tannen x) (Tannen y) = liftCompare (liftCompare2 f g) x y+instance (Read1 f, Read2 s) => Read2 (Tannen f s) where liftReadPrec2 rpa rlpa rpb rlpb = Tannen <$> liftReadPrec (liftReadPrec2 rpa rlpa rpb rlpb) (liftReadListPrec2 rpa rlpa rpb rlpb)+instance (Show1 f, Show2 s) => Show2 (Tannen f s) where liftShowsPrec2 spa sla spb slb n = liftShowsPrec (liftShowsPrec2 spa sla spb slb) (liftShowList2 spa sla spb slb) n . unTannen+instance (Functor f, Bifunctor s) => Bifunctor (Tannen f s) where+ bimap f g = Tannen . fmap (bimap f g) . unTannen+instance (Foldable f, Bifoldable s) => Bifoldable (Tannen f s) where+ bifoldMap f g = foldMap (bifoldMap f g) . unTannen+instance (Traversable f, Bitraversable s) => Bitraversable (Tannen f s) where+ bitraverse f g = fmap Tannen . traverse (bitraverse f g) . unTannen+instance (Cotraversable f, Bicotraversable s) => Bicotraversable (Tannen f s) where+ bicotraverse f g = Tannen . cotraverse (bicotraverse f g) . fmap unTannen
+ Data/Fix.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE RankNTypes #-}++module Data.Fix where++import Control.Arrow+import Control.Comonad+import Control.Monad+import Data.Cotraversable+import Data.Function (on)+import Data.Functor.Classes+import Text.Read++newtype Fix f = Fix { unFix :: f (Fix f) }++instance Eq1 f => Eq (Fix f) where (==) = eq1 `on` unFix+instance Ord1 f => Ord (Fix f) where compare = compare1 `on` unFix+instance Read1 f => Read (Fix f) where readPrec = Fix <$> readPrec1+instance Show1 f => Show (Fix f) where showsPrec n = showsPrec1 n . unFix++mapFix :: Functor f => (∀ a . f a -> g a) -> Fix f -> Fix g+mapFix f = Fix . f . fmap (mapFix f) . unFix++cata :: Functor f => (f a -> a) -> Fix f -> a+cata f = f . fmap (cata f) . unFix++cataM :: (Traversable f, Monad m) => (f a -> m a) -> Fix f -> m a+cataM f = f <=< traverse (cataM f) <<< unFix++cataW :: (Cotraversable f, Comonad ɯ) => (ɯ (f a) -> a) -> ɯ (Fix f) -> a+cataW f = f =<= cotraverse (cataW f) <<< fmap unFix++ana :: Functor f => (a -> f a) -> a -> Fix f+ana f = Fix . fmap (ana f) . f++anaM :: (Traversable f, Monad m) => (a -> m (f a)) -> a -> m (Fix f)+anaM f = fmap Fix <<< traverse (anaM f) <=< f++anaW :: (Cotraversable f, Comonad ɯ) => (ɯ a -> f a) -> ɯ a -> Fix f+anaW f = Fix <<< cotraverse (anaW f) =<= f
+ Data/Functor/Join.hs view
@@ -0,0 +1,23 @@+module Data.Functor.Join where++import Data.Bifunctor+import Data.Bifoldable+import Data.Bitraversable+import Data.Bicotraversable+import Data.Cotraversable+import Data.Functor.Classes+import Text.Read (Read (..))++newtype Join p a = Join { unJoin :: p a a }+instance Eq2 p => Eq1 (Join p) where liftEq eq (Join x) (Join y) = liftEq2 eq eq x y+instance Ord2 p => Ord1 (Join p) where liftCompare cmp (Join x) (Join y) = liftCompare2 cmp cmp x y+instance Read2 p => Read1 (Join p) where liftReadPrec rp rlp = Join <$> liftReadPrec2 rp rlp rp rlp+instance Show2 p => Show1 (Join p) where liftShowsPrec sp sl n = liftShowsPrec2 sp sl sp sl n . unJoin+instance (Eq2 p, Eq a) => Eq (Join p a) where (==) = eq1+instance (Ord2 p, Ord a) => Ord (Join p a) where compare = compare1+instance (Read2 p, Read a) => Read (Join p a) where readPrec = readPrec1+instance (Show2 p, Show a) => Show (Join p a) where showsPrec = showsPrec1+instance Bifunctor p => Functor (Join p) where fmap f = Join . bimap f f . unJoin+instance Bifoldable p => Foldable (Join p) where foldMap f = bifoldMap f f . unJoin+instance Bitraversable p => Traversable (Join p) where traverse f = fmap Join . bitraverse f f . unJoin+instance Bicotraversable p => Cotraversable (Join p) where cotraverse f = Join . bicotraverse f f . fmap unJoin
hs-functors.cabal view
@@ -1,5 +1,5 @@ name: hs-functors-version: 0.1.1.0+version: 0.1.2.0 synopsis: Functors from products of Haskell and its dual to Haskell -- description: license: BSD3@@ -10,15 +10,24 @@ category: Math build-type: Simple cabal-version: >=1.10+tested-with: GHC ==8.0.2+ , GHC ==8.2.2 library exposed-modules: Control.Comonad+ , Control.Comonad.Cofree , Control.Comonad.Trans.Class+ , Control.Monad.Free , Control.Monad.Morph , Control.Monad.Trans.Compose+ , Data.Bicotraversable+ , Data.Bifunctor.Biff , Data.Bifunctor.Braided+ , Data.Bifunctor.Tannen , Data.Cotraversable+ , Data.Fix , Data.Functor.Contravariant+ , Data.Functor.Join , Data.Profunctor -- other-modules: -- other-extensions: @@ -28,7 +37,9 @@ default-language: Haskell2010 default-extensions: LambdaCase , UnicodeSyntax+ , TypeOperators , PolyKinds+ , RankNTypes , StandaloneDeriving , GeneralizedNewtypeDeriving , DeriveFunctor, DeriveFoldable, DeriveTraversable