profunctor-extras 0.2 → 0.3.0
raw patch · 3 files changed
+34/−9 lines, 3 files
Files
Data/Profunctor/Composition.hs view
@@ -1,16 +1,32 @@ {-# LANGUAGE GADTs #-} module Data.Profunctor.Composition - ( Compose(..)+ ( Procompose(..)+ , proidl+ , proidr+ , coproidl+ , coproidr ) where import Data.Profunctor -data Compose f g d c where- Compose :: f d a -> g a c -> Compose f g d c +data Procompose f g d c where+ Procompose :: f d a -> g a c -> Procompose f g d c -instance (Profunctor f, Profunctor g) => Profunctor (Compose f g) where- lmap k (Compose f g) = Compose (lmap k f) g- rmap k (Compose f g) = Compose f (rmap k g)+instance (Profunctor f, Profunctor g) => Profunctor (Procompose f g) where+ lmap k (Procompose f g) = Procompose (lmap k f) g+ rmap k (Procompose f g) = Procompose f (rmap k g) -instance Profunctor g => Functor (Compose f g a) where- fmap k (Compose f g) = Compose f (rmap k g)+instance Profunctor g => Functor (Procompose f g a) where+ fmap k (Procompose f g) = Procompose f (rmap k g)++proidl :: Profunctor g => Procompose (->) g d c -> g d c +proidl (Procompose f g) = lmap f g++proidr :: Profunctor f => Procompose f (->) d c -> f d c+proidr (Procompose f g) = rmap g f++coproidl :: g d c -> Procompose (->) g d c+coproidl = Procompose id++coproidr :: f d c -> Procompose f (->) d c+coproidr g = Procompose g id
+ Data/Profunctor/Trace.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE GADTs #-}+module Data.Profunctor.Trace+ ( Trace(..)+ ) where++-- | Coend of profunctor from Hask -> Hask+data Trace f where+ Trace :: f a a -> Trace f
profunctor-extras.cabal view
@@ -1,6 +1,6 @@ name: profunctor-extras category: Control, Categories-version: 0.2+version: 0.3.0 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -28,5 +28,6 @@ exposed-modules: Data.Profunctor.Composition Data.Profunctor.Collage+ Data.Profunctor.Trace ghc-options: -Wall