semigroupoid-extras 0.2.4.1 → 0.2.5
raw patch · 3 files changed
+11/−1 lines, 3 filesdep +groupoidsPVP ok
version bump matches the API change (PVP)
Dependencies added: groupoids
API changes (from Hackage documentation)
+ Data.Semigroupoid.Coproduct: instance (Groupoid j, Groupoid k) => Groupoid (Coproduct j k)
+ Data.Semigroupoid.Product: instance (Groupoid j, Groupoid k) => Groupoid (Product j k)
Files
- Data/Semigroupoid/Coproduct.hs +5/−0
- Data/Semigroupoid/Product.hs +4/−0
- semigroupoid-extras.cabal +2/−1
Data/Semigroupoid/Coproduct.hs view
@@ -4,6 +4,7 @@ import Data.Semigroupoid import Data.Semigroupoid.Dual+import Data.Groupoid data L a data R a@@ -16,6 +17,10 @@ L f `o` L g = L (f `o` g) R f `o` R g = R (f `o` g) _ `o` _ = error "GADT fail"++instance (Groupoid j, Groupoid k) => Groupoid (Coproduct j k) where+ inv (L f) = L (inv f)+ inv (R f) = R (inv f) distributeDualCoproduct :: Dual (Coproduct j k) a b -> Coproduct (Dual j) (Dual k) a b distributeDualCoproduct (Dual (L l)) = L (Dual l)
Data/Semigroupoid/Product.hs view
@@ -7,12 +7,16 @@ import Data.Semigroupoid import Data.Semigroupoid.Dual+import Data.Groupoid data Product j k a b where Pair :: j a b -> k a' b' -> Product j k (a,a') (b,b') instance (Semigroupoid j, Semigroupoid k) => Semigroupoid (Product j k) where Pair w x `o` Pair y z = Pair (w `o` y) (x `o` z)++instance (Groupoid j, Groupoid k) => Groupoid (Product j k) where+ inv (Pair w x) = Pair (inv w) (inv x) distributeDualProduct :: Dual (Product j k) a b -> Product (Dual j) (Dual k) a b distributeDualProduct (Dual (Pair l r)) = Pair (Dual l) (Dual r)
semigroupoid-extras.cabal view
@@ -1,6 +1,6 @@ name: semigroupoid-extras category: Control-version: 0.2.4.1+version: 0.2.5 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -22,6 +22,7 @@ base >= 4 && < 5, distributive >= 0.2 && < 0.3, semigroupoids >= 1.2.2 && < 1.3,+ groupoids >= 0.1.1 && < 0.2, comonad >= 1.1 && < 1.2 exposed-modules: