作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有一堆严格链接在一起的函数,那么使用 compose
就很容易了。将它们结合起来:
f1 : A -> B
f2 : B -> C
f3 : C -> D
pipe(f1, f2, f3) : A -> D
A
中包含的信息在稍后阶段再次需要:
f1 : A -> B
f2 : B -> C
f3 : (A, C) -> D
A
成对什么的, map
pipe(f1,f2)
在第二个元素上,然后我为
f3
准备好了一切.不过,我想不出一个非常优雅的方法来做这件事,而且感觉这是一个足够普遍的情况,必须有一个既定的模式!
none
.
f1 = len
f2 = mod(2)
f3 = (s, m) => m == 0 ? Just(s) : None
最佳答案
函数组合的类型不允许这样做。我认为 lambda 和 currying 比通过组合传递元组类型更简单明了:
const f1 = s => s.length;
const f2 = n => n % 2;
const f3 = s => m => m === 0 ? s : null;
const comp3 = f => g => h => x => f(g(h(x)));
const main = s => comp3(f3(s)) (f2) (f1) (s);
console.log(main("hallo"));
console.log(main("halloo"));
const f1 = s => s.length;
const f2 = n => n % 2;
const f3 = s => m => m === 0 ? s : null;
const comp3 = f => g => h => x => f(g(h(x)));
const join = f => x => f(x) (x); // monadic join
const flip = f => y => x => f(x) (y);
const main = join(comp3(flip(f3)) (f2) (f1));
console.log(main("hallo"));
console.log(main("halloo"));
关于functional-programming - 如何将数据传递到组合管道的后期阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59084091/
我是一名优秀的程序员,十分优秀!