【发布时间】:2016-05-07 22:34:24
【问题描述】:
如果我有一个 Task 有一个 Either err b 作为正确(成功)值,我如何组合/合并/转换它们以便成功值直接在 .fork() 中可用,而不是包含在Either?
const Task = require('data.task'); // folktale
const Either = require('data.either');
// eitherYayNay :: Bool → Either String String
const eitherYayNay = bool =>
bool ? Either.Right('yay') : Either.Left('nay');
// theTask :: Bool → Task Either a b
const theTask = yn =>
new Task((reject, resolve) => {
resolve(eitherYayNay(yn));
// reject();
});
// niceTask :: Bool → Task a b
// ???
// the desired result...
niceTask(something).fork(
err => {
// err could be the left value of the Task, or of the Either
},
val => {
console.log(val); // a string, not an Either
}
);
【问题讨论】:
标签: javascript functional-programming folktale