diff --git a/dist/cjs/subterfuge.js b/dist/cjs/subterfuge.js index 6ed9c36..8ba6d8a 100644 --- a/dist/cjs/subterfuge.js +++ b/dist/cjs/subterfuge.js @@ -60,9 +60,26 @@ const composeRight = (func1, func2) => (...args) => func1(func2(...args)); const pipeLeft = (...funcs) => funcs.reduce(composeLeft); const pipeRight = (...funcs) => funcs.reduce(composeRight); +const Left = value => ({ + map: func => Left(value), + fold: (errorhandler, successhandler) => errorhandler(value), + inspect: () => `Left(${value})` +}); + +const Right = value => ({ + map: func => Right(func(value)), + fold: (errorhandler, successhandler) => successhandler(value), + inspect: () => `Right(${value})` +}); + +const Either = value => (value == null ? Left(value) : Right(value)); + exports.Box = Box; exports.LazyBox = LazyBox; exports.composeLeft = composeLeft; exports.composeRight = composeRight; exports.pipeLeft = pipeLeft; exports.pipeRight = pipeRight; +exports.Either = Either; +exports.Left = Left; +exports.Right = Right; diff --git a/dist/es/subterfuge.js b/dist/es/subterfuge.js index 5f267dc..0d2fe0f 100644 --- a/dist/es/subterfuge.js +++ b/dist/es/subterfuge.js @@ -56,4 +56,18 @@ const composeRight = (func1, func2) => (...args) => func1(func2(...args)); const pipeLeft = (...funcs) => funcs.reduce(composeLeft); const pipeRight = (...funcs) => funcs.reduce(composeRight); -export { Box, LazyBox, composeLeft, composeRight, pipeLeft, pipeRight }; +const Left = value => ({ + map: func => Left(value), + fold: (errorhandler, successhandler) => errorhandler(value), + inspect: () => `Left(${value})` +}); + +const Right = value => ({ + map: func => Right(func(value)), + fold: (errorhandler, successhandler) => successhandler(value), + inspect: () => `Right(${value})` +}); + +const Either = value => (value == null ? Left(value) : Right(value)); + +export { Box, LazyBox, composeLeft, composeRight, pipeLeft, pipeRight, Either, Left, Right }; diff --git a/src/index.js b/src/index.js index 5a70000..37a395e 100644 --- a/src/index.js +++ b/src/index.js @@ -2,3 +2,4 @@ export { Box } from './containers/box'; export { LazyBox } from './containers/lazybox'; export { composeLeft, composeRight } from './composition/compose'; export { pipeLeft, pipeRight } from './composition/pipe'; +export { Either, Left, Right } from './containers/either';