TypeCompose 0.9.12 → 0.9.13
raw patch · 5 files changed
+22/−8 lines, 5 filesdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
- Control.Compose: instance Control.Compose.Monoid_f Data.Monoid.Endo
- Control.Compose: type (:->:) = Arrw (->)
- Data.Bijection: type (:<->:) a b = Bijection (->) a b
- Data.Lambda: instance Data.Lambda.Colambda Data.Monoid.Endo
- Data.Lambda: instance Data.Lambda.Unlambda Data.Monoid.Endo Data.Monoid.Endo
- Data.Pair: instance Data.Pair.Copair Data.Monoid.Endo
- Data.Pair: instance Data.Pair.Pair Data.Monoid.Endo
- Data.Pair: instance Data.Pair.Unpair Data.Monoid.Endo
- Data.Zip: instance Data.Zip.Cozip Data.Monoid.Endo
- Data.Zip: instance Data.Zip.Unzip Data.Monoid.Endo
- Data.Zip: instance Data.Zip.Zip Data.Monoid.Endo
+ Control.Compose: instance (GHC.Base.Applicative (j a), GHC.Base.Semigroup o) => GHC.Base.Semigroup (Control.Compose.Flip j o a)
+ Control.Compose: instance (GHC.Base.Applicative f, GHC.Base.Semigroup m) => GHC.Base.Semigroup (Control.Compose.App f m)
+ Control.Compose: instance Control.Compose.Monoid_f Data.Semigroup.Internal.Endo
+ Control.Compose: instance GHC.Base.Semigroup (j (f a) (g a)) => GHC.Base.Semigroup (Control.Compose.Arrw j f g a)
+ Control.Compose: newtype f (:$) a
+ Control.Compose: type :->: = Arrw (->)
+ Data.Bijection: type a :<->: b = Bijection (->) a b
+ Data.CxMonoid: instance GHC.Base.Semigroup (Data.CxMonoid.CxMonoid a)
+ Data.Lambda: instance Data.Lambda.Colambda Data.Semigroup.Internal.Endo
+ Data.Lambda: instance Data.Lambda.Unlambda Data.Semigroup.Internal.Endo Data.Semigroup.Internal.Endo
+ Data.Pair: instance Data.Pair.Copair Data.Semigroup.Internal.Endo
+ Data.Pair: instance Data.Pair.Pair Data.Semigroup.Internal.Endo
+ Data.Pair: instance Data.Pair.Unpair Data.Semigroup.Internal.Endo
+ Data.Zip: instance Data.Zip.Cozip Data.Semigroup.Internal.Endo
+ Data.Zip: instance Data.Zip.Unzip Data.Semigroup.Internal.Endo
+ Data.Zip: instance Data.Zip.Zip Data.Semigroup.Internal.Endo
- Control.Compose: FunA :: (h a -> h b) -> FunA h a b
+ Control.Compose: FunA :: h a -> h b -> FunA h a b
- Control.Compose: class FunAble h where f ***% g = firstFun f >>> secondFun g f &&&% g = arrFun (\ b -> (b, b)) >>> f ***% g
+ Control.Compose: class FunAble h
- Control.Compose: newtype (::*::) f g a b
+ Control.Compose: newtype ( f (::*::) g ) a b
- Data.CxMonoid: CxMonoid :: (MonoidDict a -> a) -> CxMonoid a
+ Data.CxMonoid: CxMonoid :: MonoidDict a -> a -> CxMonoid a
- Data.Lambda: class Unlambda src snk | snk -> src where unlambda = fsrc &&& fres fsrc = fst . unlambda fres = snd . unlambda
+ Data.Lambda: class Unlambda src snk | snk -> src
- Data.Pair: class Unpair f where unpair = fsts &&& snds fsts = fst . unpair snds = snd . unpair
+ Data.Pair: class Unpair f
- Data.Zip: class Unzip f where unzip = fsts &&& snds fsts = fst . unzip snds = snd . unzip
+ Data.Zip: class Unzip f
Files
- TypeCompose.cabal +1/−1
- src/Control/Compose.hs +10/−3
- src/Data/CxMonoid.hs +6/−2
- src/Data/Title.hs +3/−2
- src/Data/Zip.hs +2/−0
TypeCompose.cabal view
@@ -1,5 +1,5 @@ Name: TypeCompose-Version: 0.9.12+Version: 0.9.13 Synopsis: Type composition classes & instances Category: Composition, Control Cabal-Version: >= 1.6
src/Control/Compose.hs view
@@ -87,8 +87,8 @@ import Data.Orphans () import Data.Monoid+import qualified Data.Semigroup as Sem import Data.Foldable-import Data.Traversable import Control.Applicative import Control.Monad (join,liftM) @@ -592,10 +592,13 @@ instance Arrow arr => ContraFunctor (Flip arr b) where contraFmap h (Flip f) = Flip (arr h >>> f) +instance (Applicative (j a), Sem.Semigroup o) => Sem.Semigroup (Flip j o a) where+ (<>) = inFlip2 (liftA2 (Sem.<>))+ -- Useful for (~>) = (->). Maybe others. instance (Applicative (j a), Monoid o) => Monoid (Flip j o a) where mempty = Flip (pure mempty)- mappend = inFlip2 (liftA2 mappend)+ mappend = (<>) -- TODO: generalize (->) to (~>) with Applicative_f (~>) instance Monoid o => Monoid_f (Flip (->) o) where@@ -642,9 +645,12 @@ inApp2 h (App fa) = inApp (h fa) -- Example: App IO ()+instance (Applicative f, Sem.Semigroup m) => Sem.Semigroup (App f m) where+ (<>) = inApp2 (liftA2 (Sem.<>))+ instance (Applicative f, Monoid m) => Monoid (App f m) where mempty = App (pure mempty )- mappend = inApp2 (liftA2 mappend)+ mappend = (<>) -- App a `mappend` App b = App (liftA2 mappend a b) @@ -848,6 +854,7 @@ -- For ghc-6.6, use the "deriving" above, but for 6.8 use the "deriving" below. +deriving instance Sem.Semigroup (f a `j` g a) => Sem.Semigroup (Arrw j f g a) deriving instance Monoid (f a `j` g a) => Monoid (Arrw j f g a) -- Replace with generalized bijection?
src/Data/CxMonoid.hs view
@@ -16,6 +16,7 @@ module Data.CxMonoid (MonoidDict, CxMonoid(..), biCxMonoid) where import Data.Monoid (Monoid(..))+import qualified Data.Semigroup as Sem import Data.Bijection import Data.Title@@ -30,10 +31,13 @@ biCxMonoid :: (MonoidDict a -> a) :<->: CxMonoid a biCxMonoid = Bi CxMonoid unCxMonoid +instance Sem.Semigroup (CxMonoid a) where+ CxMonoid f <> CxMonoid g =+ CxMonoid (\ md@(_,op) -> f md `op` g md)+ instance Monoid (CxMonoid a) where mempty = CxMonoid (\ (e,_) -> e)- CxMonoid f `mappend` CxMonoid g =- CxMonoid (\ md@(_,op) -> f md `op` g md)+ mappend = (Sem.<>) -- Exploit the function instance of 'Title' instance Title a => Title (CxMonoid a) where
src/Data/Title.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE FlexibleInstances, OverlappingInstances, TypeOperators, TypeSynonymInstances #-}+{-# LANGUAGE FlexibleInstances, TypeOperators, TypeSynonymInstances #-} {-# OPTIONS_GHC -Wall #-} ---------------------------------------------------------------------- -- |@@ -40,7 +40,8 @@ instance Title_f g => Title_f (g :. f) where title_f str = inO (title_f str) -instance Title_f f => Title (f a) where title = title_f+instance {-# OVERLAPPABLE #-} Title_f f => Title (f a) where+ title = title_f instance Title String where title ttl str = (ttl ++ suffix ++ str)
src/Data/Zip.hs view
@@ -5,6 +5,8 @@ #else {-# OPTIONS_GHC -fenable-rewrite-rules #-} #endif+{-# OPTIONS_GHC -Wno-inline-rule-shadowing #-}+ ---------------------------------------------------------------------- -- |