函数式编程对象IO

IO用来将不纯的函数变为纯的,它采取的方式呢,真的是不大高明甚至是有些粗暴的,就是“不调用”。也就是将函数视为“数据”。直到你扣动扳机的那一刻(调用runIo方法),函数才被执行。例:

 

const R= require('ramda');
const {IO} = require('ramda-fantasy');


//一个要操作外部全局变量的非纯函数
var globalVar = 'Hello';
const writeGlobleVar = (v)=> globalVar +=  v;

//其他的一些纯函数
const Fn1 = (v)=> R.toUpper(v);
const Fn2 = (v)=> '_' + v;
const Fn3 = (v)=> v + '_welcome'

//组合我们的调用
const processStr = R.pipe(Fn1,Fn2,Fn3,writeGlobleVar);
processStr('kugou');
console.log(globleVar);

 

组合得到的processStr方法直接写了外部变量,是不纯的。我们用IO来搞一个纯的

const processStr =  IO(Fn1).map(Fn2).map(Fn3).map(writeGlobleVar);//方法链被包裹在了IO对象中

processStr.runIO('kugou');//程序员自己扣动板机,并承担自己犯下的罪行

console.log(globalVar);

 

那么问题来了,这有个毛用啊?在js的地盘上,不纯太正常了,我也想不出这玩意有啥用,如果我将来我有幸能碰到使用这玩意的地方,我会来补充示例的。下面想讲一下Identity。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值