packages feed

Semigroup 0.0.4 → 0.0.5

raw patch · 2 files changed

+15/−38 lines, 2 filesdep +mtlPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: mtl

API changes (from Hackage documentation)

- Data.Semigroup: data Identity a
- Data.Semigroup: identity :: a -> Identity a
- Data.Semigroup: instance (Monoid a) => Semigroup (Identity a)
- Data.Semigroup: instance (Num a) => Semigroup (Product a)
- Data.Semigroup: instance (Num a) => Semigroup (Sum a)
- Data.Semigroup: instance (Semigroup a) => Semigroup (Dual a)
- Data.Semigroup: instance (Semigroup a) => Semigroup (IO a)
- Data.Semigroup: instance (Semigroup a) => Semigroup (Maybe a)
- Data.Semigroup: instance (Semigroup b) => Semigroup (a -> b)
- Data.Semigroup: instance Applicative Identity
- Data.Semigroup: instance Functor Identity
- Data.Semigroup: instance Monad Identity
- Data.Semigroup: run :: Identity a -> a
+ Data.Semigroup: instance Monoid a => Semigroup (Identity a)
+ Data.Semigroup: instance Num a => Semigroup (Product a)
+ Data.Semigroup: instance Num a => Semigroup (Sum a)
+ Data.Semigroup: instance Semigroup a => Semigroup (Dual a)
+ Data.Semigroup: instance Semigroup a => Semigroup (IO a)
+ Data.Semigroup: instance Semigroup a => Semigroup (Maybe a)
+ Data.Semigroup: instance Semigroup b => Semigroup (a -> b)
- Data.Semigroup: (.++.) :: (Semigroup a) => a -> a -> a
+ Data.Semigroup: (.++.) :: Semigroup a => a -> a -> a

Files

Data/Semigroup.hs view
@@ -1,43 +1,23 @@ -- | A semigroup is a binary associative operation. module Data.Semigroup(                      Semigroup((.++.)),-                     Identity,-                     run,-                     identity,                      (<++>)                      ) where  import Data.Monoid+import Control.Monad.Identity import Control.Applicative  -- | A binary operation that must satisfy associativity. Unlike a @Monoid@, an identity in not essential. class Semigroup a where   (.++.) :: a -> a -> a --- | A wrapper used to construct a @Semigroup@ from a @Monoid@.-newtype Identity a = Identity { run :: a }---- | Construct a wrapper for a monoid instance.-identity :: a -> Identity a-identity = Identity- -- | A binary associative operation lifted into an applicative functor. (<++>) :: (Applicative f, Semigroup a) => f a -> f a -> f a (<++>) = liftA2 (.++.) -instance Functor Identity where-  fmap f (Identity a) = Identity (f a)--instance Applicative Identity where-  pure = Identity-  Identity f <*> Identity a = Identity (f a)--instance Monad Identity where-  return = Identity-  Identity a >>= f = f a- instance Monoid a => Semigroup (Identity a) where-  (.++.) = liftA2 mappend+  (.++.) = liftM2 mappend  instance Semigroup () where   _ .++. _ = ()@@ -61,25 +41,25 @@   (a1, b1, c1, d1, e1) .++. (a2, b2, c2, d2, e2) = (a1 .++. a2, b1 .++. b2, c1 .++. c2, d1 .++. d2, e1 .++. e2)  instance Semigroup Ordering where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Semigroup All where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Semigroup Any where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Semigroup a => Semigroup (Dual a) where   Dual a .++. Dual b = Dual (b .++. a)  instance Semigroup (Endo a) where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Num a => Semigroup (Product a) where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Num a => Semigroup (Sum a) where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Semigroup a => Semigroup (Maybe a) where   Nothing .++. b = b@@ -87,10 +67,10 @@   Just a .++. Just b = Just (a .++. b)  instance Semigroup (First a) where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Semigroup (Last a) where-  a .++. b = run (Identity a .++. Identity b)+  a .++. b = runIdentity (Identity a .++. Identity b)  instance Semigroup [a] where   (.++.) = (++)
Semigroup.cabal view
@@ -1,5 +1,5 @@ Name:                Semigroup-Version:             0.0.4+Version:             0.0.5 License:             BSD3 License-File:        LICENSE Synopsis:            A semigroup@@ -13,14 +13,11 @@ cabal-version:       >= 1.2  Flag small_base-  Description:     Choose the new, split-up base package.+  Description:       Choose the new, split-up base package.  Library-  if flag(small_base)-    Build-Depends: base < 5 && >= 3-  else-    Build-Depends: base < 5 && >= 3+  Build-Depends:     base < 5 && >= 3, mtl -  GHC-Options:    -Wall-  Exposed-Modules: Data.Semigroup+  GHC-Options:       -Wall+  Exposed-Modules:   Data.Semigroup