今天无聊看到阮一峰老师15年写的一篇文章,有点想法,记录一下。
图解 Monad - 阮一峰的网络日志 (ruanyifeng.com)
阮老师讲了半天,照我的理解是有个能处理函数类型+函数类型的函数,那我就造一个,貌似没啥用,写着玩
实现
先写俩函数,一会就把他们混合起来
function say() {
console.log('I can say!')
return 1
}
function other() {
console.log('I can fly!')
}
混合器实现
function fnMixer(...Fn: Function[]) {
return function () {
return Fn.map(f => f());
}
}
const mixFn = fnMixer(say, other)
const ret = mixFn()
console.log(ret);
// output:
/*
I can say!
I can fly!
[ 1, undefined ]
*/
现在看来函数返回值处理的有问题,返回值不知道是哪个函数的,分类一下。
function fnMixer(...Fn: Function[]) {
return () => {
return Fn.map(f => ({
name: f.name,
result: f()
}));
}
}
const mixFn = fnMixer(say, other)
const ret = mixFn()
console.log(ret);
// [ { name: 'say', result: 1 }, { name: 'other', result: undefined } ]