分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

[JS Compose] 7. Ensure failsafe combination using monoids

发布时间:2023-09-06 02:33责任编辑:沈小雨关键词:暂无标签

monoids is a semi-group with a neutral element. A semigroup, it does not have an element to return so it‘s not a safe operation, whereas with the monoids we could take as many as we possibly want, even none, and still return us back something. It‘s a perfectly safe operation here that we can reduce as many of them as we‘d like.

For example to Sum():

const Sum = x => ({ ??concat: o => Sum(x + o.x) })

‘Zero‘ neutral element for Sum semi-group, so Sum is monoids.

2 + 0 //21 + 0 //1x + 0 //x

So we can define an interface for Sum:

Sum.empty = () => Sum(0)

And if we concat Sum.empty to anything, it won‘t affect the result:

Sum.empty().concat(Sum(1)) // Sum(1)

The same as All():

All.empty = () => All(true)// true && true --> ?true// false && true --> ?false 

But for the First(), we can not find a neutal element for it, because it just throw away the rest value only keep the first value and first value can be undefined.

[1,2,3] && undefined --> 1undefined && [1,2,3] ?--> error

Monodis also looks like reduce:

const sum = xs => ?xs.reduce((acc, x) => acc + x, 0)console.log(sum([1,2,3])) //6const all = xs => ?xs.reduce((acc, x) => acc && x, true)console.log(all([true, false])) //falseconst first = xs => ?xs.reduce((acc, x) => acc)console.log(first([1,2,3]))console.log(first([])) //Error

[JS Compose] 7. Ensure failsafe combination using monoids

原文地址:https://www.cnblogs.com/Answer1215/p/6184565.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved