hydrogen-prelude 0.15 → 0.16
raw patch · 4 files changed
+98/−19 lines, 4 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
- Hydrogen.Prelude: instance Apply ((a -> b -> c -> d -> e -> f) -> (a, b, c, d, e) -> f)
- Hydrogen.Prelude: instance Apply ((a -> b -> c -> d -> e) -> (a, b, c, d) -> e)
- Hydrogen.Prelude: instance Apply ((a -> b -> c -> d) -> (a, b, c) -> d)
- Hydrogen.Prelude: instance Apply ((a -> b -> c) -> (a, b) -> c)
- Hydrogen.Prelude: instance Apply ((a -> b) -> a -> b)
- Hydrogen.Prelude: instance Functor f => Apply ((a -> b -> c -> d -> e -> z) -> f (a, b, c, d, e) -> f z)
- Hydrogen.Prelude: instance Functor f => Apply ((a -> b -> c -> d -> e) -> f (a, b, c, d) -> f e)
- Hydrogen.Prelude: instance Functor f => Apply ((a -> b -> c -> d) -> f (a, b, c) -> f d)
- Hydrogen.Prelude: instance Functor f => Apply ((a -> b -> c) -> f (a, b) -> f c)
- Hydrogen.Prelude: instance Functor f => Apply ((a -> b) -> f a -> f b)
+ Hydrogen.Prelude: ($$$$$) :: (a -> b -> c -> d -> e -> z) -> (a, b, c, d, e) -> z
+ Hydrogen.Prelude: ($$$$) :: (a -> b -> c -> d -> z) -> (a, b, c, d) -> z
+ Hydrogen.Prelude: ($$$) :: (a -> b -> c -> z) -> (a, b, c) -> z
+ Hydrogen.Prelude: ($$) :: (a -> b -> z) -> (a, b) -> z
+ Hydrogen.Prelude: (<$$$$$>) :: Functor f => (a -> b -> c -> d -> e -> z) -> f (a, b, c, d, e) -> f z
+ Hydrogen.Prelude: (<$$$$>) :: Functor f => (a -> b -> c -> d -> z) -> f (a, b, c, d) -> f z
+ Hydrogen.Prelude: (<$$$>) :: Functor f => (a -> b -> c -> z) -> f (a, b, c) -> f z
+ Hydrogen.Prelude: (<$$>) :: Functor f => (a -> b -> z) -> f (a, b) -> f z
+ Hydrogen.Prelude: instance (Functor f, Applicator (f (a, b)) (f z) ~ (a -> b -> z)) => Apply (f (a, b)) (f z)
+ Hydrogen.Prelude: instance (Functor f, Applicator (f (a, b, c)) (f z) ~ (a -> b -> c -> z)) => Apply (f (a, b, c)) (f z)
+ Hydrogen.Prelude: instance (Functor f, Applicator (f (a, b, c, d)) (f z) ~ (a -> b -> c -> d -> z)) => Apply (f (a, b, c, d)) (f z)
+ Hydrogen.Prelude: instance (Functor f, Applicator (f (a, b, c, d, e)) (f z) ~ (a -> b -> c -> d -> e -> z)) => Apply (f (a, b, c, d, e)) (f z)
+ Hydrogen.Prelude: instance (Functor f, Applicator (f a) (f z) ~ (a -> z)) => Apply (f a) (f z)
+ Hydrogen.Prelude: instance Applicator a z ~ (a -> z) => Apply a z
+ Hydrogen.Prelude: instance Apply (a, b) z
+ Hydrogen.Prelude: instance Apply (a, b, c) z
+ Hydrogen.Prelude: instance Apply (a, b, c, d) z
+ Hydrogen.Prelude: instance Apply (a, b, c, d, e) z
- Hydrogen.Prelude: (*$*) :: Apply a => a
+ Hydrogen.Prelude: (*$*) :: Apply x z => Applicator x z -> x -> z
- Hydrogen.Prelude: class Apply a
+ Hydrogen.Prelude: class Apply x z
- Hydrogen.Prelude: uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
+ Hydrogen.Prelude: uncurry3 :: (a -> b -> c -> z) -> (a, b, c) -> z
- Hydrogen.Prelude: uncurry4 :: (a -> b -> c -> d -> e) -> (a, b, c, d) -> e
+ Hydrogen.Prelude: uncurry4 :: (a -> b -> c -> d -> z) -> (a, b, c, d) -> z
- Hydrogen.Prelude: uncurry5 :: (a -> b -> c -> d -> e -> f) -> (a, b, c, d, e) -> f
+ Hydrogen.Prelude: uncurry5 :: (a -> b -> c -> d -> e -> z) -> (a, b, c, d, e) -> z
Files
- CHANGELOG.md +18/−1
- README.md +2/−0
- hydrogen-prelude.cabal +3/−2
- src/Hydrogen/Prelude.hs +75/−16
CHANGELOG.md view
@@ -69,7 +69,24 @@ ## v0.11 + Added `nicify` form `Text.Nicify`-+ Upgraded dependency `hydrogen-version` form `>=1.2` to `>=1.3`++ Upgraded dependency `hydrogen-version` from `>=1.2` to `>=1.3` ## v0.12 + Added `Default`++## v0.13++ _Skipped_++## v0.14++ Aligned with other `hydrogen-*` packages++## v0.15++ Added `Apply`++ Added `uncurry3`, `uncurry4`, `uncurry5`++## v0.16++ Changed `Apply` to use `-XMultiParamTypeClasses` and `-XTypeFamilies`++ Added `$$`, `$$$`, `$$$$`, `$$$$$` (lile `uncurryN`)++ Added `<$$>`, `<$$$>`, `<$$$$>`, `<$$$$$>` (like `<$>` and `uncurryN`)++
README.md view
@@ -1,6 +1,8 @@ hydrogen-prelude ================ +[](https://travis-ci.org/scravy/hydrogen-prelude)+ + [`about`](#about) + [`scravy.de/hydrogen-prelude`](http://scravy.de/hydrogen-prelude) + [`hackage.haskell.org/package/hydrogen-prelude`](http://hackage.haskell.org/package/hydrogen-prelude)
hydrogen-prelude.cabal view
@@ -1,5 +1,5 @@ name: hydrogen-prelude-version: 0.15+version: 0.16 homepage: http://scravy.de/hydrogen-prelude/ synopsis: Hydrogen Prelude license: MIT@@ -20,7 +20,7 @@ , Hydrogen.Prelude.IO , Hydrogen.Prelude.Network , Hydrogen.Prelude.System- build-depends: base ==4.7.*+ build-depends: base >=4.6 && <5 , array ==0.5.* , cereal ==0.4.* , containers ==0.5.*@@ -53,6 +53,7 @@ , FlexibleContexts , GADTs , LambdaCase+ , MultiParamTypeClasses , MultiWayIf , NegativeLiterals , NoImplicitPrelude
src/Hydrogen/Prelude.hs view
@@ -41,6 +41,14 @@ , (=~) , (=~~) , (|>)+ , ($$)+ , ($$$)+ , ($$$$)+ , ($$$$$)+ , (<$$>)+ , (<$$$>)+ , (<$$$$>)+ , (<$$$$$>) , uuidFromString , randomUUID , nicify@@ -65,6 +73,7 @@ , Container (..) , Default (..) , Apply (..)+ , Applicator , __ ) where @@ -427,57 +436,107 @@ instance MonadPlus m => Default (m a) where def = mzero -class Apply a where+type family Applicator a b where - (*$*) :: a+ Applicator (a, b, c, d, e) z = (a -> b -> c -> d -> e -> z)+ Applicator (a, b, c, d) z = (a -> b -> c -> d -> z)+ Applicator (a, b, c) z = (a -> b -> c -> z)+ Applicator (a, b) z = (a -> b -> z) + Applicator (f (a, b, c, d, e)) (f z) = (a -> b -> c -> d -> e -> z)+ Applicator (f (a, b, c, d)) (f z) = (a -> b -> c -> d -> z)+ Applicator (f (a, b, c)) (f z) = (a -> b -> c -> z)+ Applicator (f (a, b)) (f z) = (a -> b -> z)+ Applicator (f a) (f z) = (a -> z) -instance Apply ((a -> b) -> a -> b) where+ Applicator x z = (x -> z) ++class Apply x z where++ (*$*) :: Applicator x z -> x -> z++instance (Applicator a z ~ (a -> z)) => Apply a z where+ (*$*) = ($) -instance Apply ((a -> b -> c) -> (a, b) -> c) where+instance Apply (a, b) z where (*$*) = uncurry -instance Apply ((a -> b -> c -> d) -> (a, b, c) -> d) where+instance Apply (a, b, c) z where (*$*) = uncurry3 -instance Apply ((a -> b -> c -> d -> e) -> (a, b, c, d) -> e) where+instance Apply (a, b, c, d) z where (*$*) = uncurry4 -instance Apply ((a -> b -> c -> d -> e -> f) -> (a, b, c, d, e) -> f) where+instance Apply (a, b, c, d, e) z where (*$*) = uncurry5 -instance Functor f => Apply ((a -> b) -> f a -> f b) where+instance (Functor f, Applicator (f a) (f z) ~ (a -> z))+ => Apply (f a) (f z) where - (*$*) = fmap+ (*$*) = fmap . ($) -instance Functor f => Apply ((a -> b -> c) -> f (a, b) -> f c) where+instance (Functor f, Applicator (f (a, b)) (f z) ~ (a -> b -> z))+ => Apply (f (a, b)) (f z) where (*$*) = fmap . uncurry -instance Functor f => Apply ((a -> b -> c -> d) -> f (a, b, c) -> f d) where+instance (Functor f, Applicator (f (a, b, c)) (f z) ~ (a -> b -> c -> z))+ => Apply (f (a, b, c)) (f z) where (*$*) = fmap . uncurry3 -instance Functor f => Apply ((a -> b -> c -> d -> e) -> f (a, b, c, d) -> f e) where+instance (Functor f, Applicator (f (a, b, c, d)) (f z) ~ (a -> b -> c -> d -> z))+ => Apply (f (a, b, c, d)) (f z) where (*$*) = fmap . uncurry4 -instance Functor f => Apply ((a -> b -> c -> d -> e -> z) -> f (a, b, c, d, e) -> f z) where+instance (Functor f, Applicator (f (a, b, c, d, e)) (f z) ~ (a -> b -> c -> d -> e -> z))+ => Apply (f (a, b, c, d, e)) (f z) where (*$*) = fmap . uncurry5 -uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d++infixr 0 $$+infixr 0 $$$+infixr 0 $$$$+infixr 0 $$$$$++($$) :: (a -> b -> z) -> (a, b) -> z+($$) = uncurry++($$$), uncurry3 :: (a -> b -> c -> z) -> (a, b, c) -> z uncurry3 f (a, b, c) = f a b c+($$$) = uncurry3 -uncurry4 :: (a -> b -> c -> d -> e) -> (a, b, c, d) -> e+($$$$), uncurry4 :: (a -> b -> c -> d -> z) -> (a, b, c, d) -> z uncurry4 f (a, b, c, d) = f a b c d+($$$$) = uncurry4 -uncurry5 :: (a -> b -> c -> d -> e -> f) -> (a, b, c, d, e) -> f+($$$$$), uncurry5 :: (a -> b -> c -> d -> e -> z) -> (a, b, c, d, e) -> z uncurry5 f (a, b, c, d, e) = f a b c d e+($$$$$) = uncurry5+++infixl 4 <$$>+infixl 4 <$$$>+infixl 4 <$$$$>+infixl 4 <$$$$$>++(<$$>) :: Functor f => (a -> b -> z) -> f (a, b) -> f z+(<$$>) = (<$>) . uncurry++(<$$$>) :: Functor f => (a -> b -> c -> z) -> f (a, b, c) -> f z+(<$$$>) = (<$>) . uncurry3++(<$$$$>) :: Functor f => (a -> b -> c -> d -> z) -> f (a, b, c, d) -> f z+(<$$$$>) = (<$>) . uncurry4++(<$$$$$>) :: Functor f => (a -> b -> c -> d -> e -> z) -> f (a, b, c, d, e) -> f z+(<$$$$$>) = (<$>) . uncurry5