Comparing version 3.2.0 to 3.3.0
33
core.js
@@ -5,3 +5,3 @@ const { curry } = require('./_tools'); | ||
// liftA2 :: Monad m => (a -> b -> c) -> m a -> m b -> m c | ||
exports.liftA2 = curry((callback, a1, a2) => | ||
const liftA2 = curry((callback, a1, a2) => | ||
a1.chain(a => | ||
@@ -12,3 +12,3 @@ a2.map(b => | ||
// liftA3 :: Monad m => (a -> b -> c -> d) -> m a -> m b -> m c -> m d | ||
exports.liftA3 = curry((callback, a1, a2, a3) => | ||
const liftA3 = curry((callback, a1, a2, a3) => | ||
a1.chain(a => | ||
@@ -20,3 +20,3 @@ a2.chain(b => | ||
// liftA3 :: Monad m => (a -> b -> c -> d -> e) -> m a -> m b -> m c -> m d -> m e | ||
exports.liftA4 = curry((callback, a1, a2, a3, a4) => | ||
const liftA4 = curry((callback, a1, a2, a3, a4) => | ||
a1.chain(a => | ||
@@ -28,9 +28,30 @@ a2.chain(b => | ||
exports.cata = curry((arg, object) => | ||
const cata = curry((arg, object) => | ||
object.cata(arg)); | ||
exports.caseOf = curry((arg, object) => | ||
const caseOf = curry((arg, object) => | ||
object.caseOf(arg)); | ||
exports.andThen = curry((arg, object) => | ||
// andThen :: Chain m => (a -> m b) -> m a -> m b | ||
const andThen = curry((arg, object) => | ||
object.andThen(arg)); | ||
// pipeC :: Chain m => ((a -> m b), (b -> m c), …, (y -> m z)) -> (a -> m z) | ||
const pipeC = (...[first, ...rest]) => v => | ||
rest.reduce((a, b) => a.chain(b), first(v)); | ||
// composeC :: Chain m => ((y -> m z), (x -> m y), …, (a -> m b)) -> (a -> m z) | ||
const composeC = (...ms) => | ||
pipeC(...ms.reverse()); | ||
module.exports = { | ||
liftA2, | ||
liftA3, | ||
liftA4, | ||
cata, | ||
caseOf, | ||
andThen, | ||
pipeC, | ||
composeC, | ||
}; |
{ | ||
"name": "zoomjs", | ||
"version": "3.2.0", | ||
"version": "3.3.0", | ||
"description": "Helpful abstractions for functional programming in javascript.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
52063
1418