C#完成Currying的过程看起来没有问题,但是其实整个过程已经表现的很繁琐了,长长的方法签名已经让人无法忍受了。对于函数式语言F#而言,Currying这种能力已经深入语言的骨髓了。
let addWithThreeParameters x y z = x + y + z let intermediateFn1 = addWithThreeParameters 1 let intermediateFn2 = intermediateFn1 2 let result = intermediateFn2 3addWithThreeParameters是一个接受三个参数的函数,由于type inference的能力,你并不需要声明参数类型
addWithThreeParameters 1 通过传递一个参数(Partial应用),F#帮你自动返回了一个Currying过的新函数
以此类推最终得到result的值
由此可见,虽然C#也能面前完成Currying的转换,但是比起F#来,整个过程已经显得特别繁琐,对于F#而言,整个过程几乎是自然发生的。从这里也能看出来函数式语言在设计的时候已经融合了这些基础的能力。
下一篇讲解Parial应用,喜欢的朋友请关注。