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 +1/−1
- src/Data/Composition.hs +36/−1
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 = (.*****)