【发布时间】:2016-09-10 03:28:25
【问题描述】:
我现在正在阅读大部分足够的 fp 指南。但我不知道如何正确组合这些函数。
const R = require('ramda');
const {IO, Future} = require('ramda-fantasy');
const read = () => IO(() => 'hello');
const write = (data) => IO(() => {
console.log(data)
return data;
});
const process = (data) => Future((reject, resolve) => {
return setTimeout(() => resolve(data), 0);
});
结合函数的最佳方式是什么:读 -> 进程 -> 写?
【问题讨论】:
-
你的
process函数真的是异步的吗? -
我猜你需要为
IO<Promise<A>>(或IO<Future<A>>)编写一个monad转换器,但你需要在JS中手动完成 -
@Bergi 为清楚起见添加了设置超时。
-
如果您不使用
IO数据类型,则不需要 monad 转换器。IO数据类型在 JavaScript 中毫无意义。事实上,Future或Promise数据类型才是真正的IO数据类型。
标签: javascript functional-programming monads