Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Functor = (x) => ({
- map: (f) => Functor(f(x)),
- fold: (f) => f(x)
- });
- const Right = (x) => ({
- map: (f) => Right(f(x)),
- fold: (f, g) => g(x),
- join: () => x,
- chain: function (f) {
- return Right(this.map(f).join());
- }
- });
- const Left = (x) => ({
- map: (f) => Left(x),
- fold: (f, g) => f(x),
- join: () => x,
- chain: function (f) {
- return Left(this.map(f).join());
- }
- });
- const Maybe = (x) => !!x ? Right(x) : Left(null);
- const tryCatch = (x) => ({
- map: (f) => {
- try {
- const newVal = f(x);
- return Right(x);
- }
- catch (err) {
- return Left(err);
- }
- },
- fold: (f, g) => Maybe(x).fold(f, g),
- join: () => x,
- chain: function (f) {
- return tryCatch(this.map(f).join());
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement