packages feed

composition 0.1 → 0.2

raw patch · 2 files changed

+37/−2 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Composition: (.*) :: (c -> d) -> (a -> b -> c) -> a -> b -> d
+ Data.Composition: (.**) :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
+ Data.Composition: (.***) :: (d -> e) -> (a -> a1 -> b -> c -> d) -> a -> a1 -> b -> c -> e
+ Data.Composition: (.****) :: (d -> e) -> (a -> a1 -> a2 -> b -> c -> d) -> a -> a1 -> a2 -> b -> c -> e
+ Data.Composition: (.*****) :: (d -> e) -> (a -> a1 -> a2 -> a3 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> b -> c -> e
+ Data.Composition: (.******) :: (d -> e) -> (a -> a1 -> a2 -> a3 -> a4 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> a4 -> b -> c -> e
+ Data.Composition: (.*******) :: (d -> e) -> (a -> a1 -> a2 -> a3 -> a4 -> a5 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> a4 -> a5 -> b -> c -> e
+ Data.Composition: (.********) :: (d -> e) -> (a -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> b -> c -> e
+ Data.Composition: compose2 :: (c -> d) -> (a -> b -> c) -> a -> b -> d
+ Data.Composition: compose3 :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
+ Data.Composition: compose4 :: (d -> e) -> (a -> a1 -> b -> c -> d) -> a -> a1 -> b -> c -> e
+ Data.Composition: compose5 :: (d -> e) -> (a -> a1 -> a2 -> b -> c -> d) -> a -> a1 -> a2 -> b -> c -> e
+ Data.Composition: compose6 :: (d -> e) -> (a -> a1 -> a2 -> a3 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> b -> c -> e
+ Data.Composition: compose7 :: (d -> e) -> (a -> a1 -> a2 -> a3 -> a4 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> a4 -> b -> c -> e
+ Data.Composition: compose8 :: (d -> e) -> (a -> a1 -> a2 -> a3 -> a4 -> a5 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> a4 -> a5 -> b -> c -> e
+ Data.Composition: compose9 :: (d -> e) -> (a -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> b -> c -> d) -> a -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> b -> c -> e

Files

composition.cabal view
@@ -1,5 +1,5 @@ Name:                composition
-Version:             0.1
+Version:             0.2
 Synopsis:            Combinators for unorthodox function composition
 License:             BSD3
 License-file:        LICENSE
src/Data/Composition.hs view
@@ -1,7 +1,37 @@-module Data.Composition where
+module Data.Composition (
+  (.*),
+  (.**),
+  (.***),
+  (.****),
+  (.*****),
+  (.******),
+  (.*******),
+  (.********),
+  compose2,
+  compose3,
+  compose4,
+  compose5,
+  compose6,
+  compose7,
+  compose8,
+  compose9
+) where
 
+-- | This function can be more clearly defined as
+-- 
+-- > (.*) f g x y = f (g x y)
+--
+-- Example usage: @bind = join .* flip fmap@
+-- Notice how two arguments will be given to @flip fmap@ before the result
+-- is passed to @join@.
+-- 
+-- This is equivalent to @bind v f = join (fmap v f)@
+(.*) :: (c -> d) -> (a -> b -> c) -> a -> b -> d
 (.*) = (.) . (.)
+
+(.**) :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
 (.**) = (.) . (.*)
+
 (.***) = (.) . (.**)
 (.****) = (.) . (.***)
 (.*****) = (.) . (.****)
@@ -9,8 +39,13 @@ (.*******) = (.) . (.******)
 (.********) = (.) . (.*******)
 
+
+compose2 :: (c -> d) -> (a -> b -> c) -> a -> b -> d
 compose2 = (.*)
+
+compose3 :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
 compose3 = (.**)
+
 compose4 = (.***)
 compose5 = (.****)
 compose6 = (.*****)