函数加里化和偏函数应用的比较
作者:网络转载 发布时间:[ 2013/4/18 11:35:46 ] 推荐标签:
我们定义的bar函数并不是一个加里化的函数。调用bar(5)并不会返回一个可以输入12的函数。我们只能像bar(5,12)这样调用这个函数。
在一些其它语言里,比如 Haskell 和 OCaml,所有的多参数函数都是通过加里化实现的。
下面是一个把上面的foo函数用OCaml语言写成的例子:
let foo = fun a ->
fun b ->
a * a + b * b
下面是把上面的bar函数用OCaml语言写成的例子:
let bar = fun a b ->
a * a + b * b
头一个函数我们叫做“显式加里化”,第二个叫做“隐式加里化”。
跟Javascript不一样,在OCaml语言里,foo函数和bar函数是完全一样的。我们用完全一样的方式调用它们。
# foo 3 4;;
- : int = 25
# bar 3 4;;
- : int = 25
两个函数都能够通过提供一个参数值来创造一个偏函数:
# let foo5 = foo 5;;
val foo5 : int -> int = <fun>
# let bar5 = bar 5;;
val bar5 : int -> int = <fun>
# foo5 12;;
- : int = 169
# bar5 12;;
- : int = 169
事实上,我们可以把下面这个匿名函数:
fun arg1 arg2 ... argN -> exp
当作是下面这个函数的简写:
fun arg1 -> fun arg2 -> ... -> fun argN -> exp
函数加里化和偏函数应用的总结
● 偏函数应用是找一个函数,固定其中的几个参数值,从而得到一个新的函数。
● 函数加里化是一种使用匿名单参数函数来实现多参数函数的方法。
● 函数加里化能够让你轻松的实现某些偏函数应用。
● 有些语言(例如 Haskell,OCaml)所有的多参函数都是在内部通过函数加里化实现的。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11