[theory] 关于克里化的一个小误区
Lich_Ray
2007-11-08
我们常常用与 f(a, b, c) == f(a)(b)(c) == f(a, b)(c) 类似的例子作为吸引Currying初学者的"Cookies",结果,不幸的是,很多人就是这样认为的(更令人无语的是,专业人士也常常把他们的扩展写成这样,比如 Functional JavaScript 和 Scalar 的语法设计)。然而事实上,所谓的克里化应当是:(f(a)(b)(c)) == (f(a))(b)(c) == (f(a)(b))(c)
但如果是这样的话,克里化岂不是更繁琐吗?根本不是那么回事。根据 Haskell(这里指的是人!)的 Lambda 演算理论,多参数函数本身就是单参数函数的语法糖: function f (a, b, c) { /* code */ } // 等价于 function f (a) { return function (b) { return function (c) { /* code */ } } } 比方说 code 为 return a+b+c ,那么 f(1)(5)(3) == 9 ,这才是克里化。想要语法漂亮一点的话用 Miranda Haskell Clean 之类的语言就行了。 |
相关讨论
相关资源推荐
- 9个国外安全性极高的邮箱,以及优缺点和邮箱格式
- 【Microsoft Outlook远程代码执行漏洞(CVE-2024-21413) MonikerLink 】【有漏洞利用代码POC】【漏洞复现】
- 探索CVE-2024-21413:Microsoft Outlook远程代码执行漏洞利用工具
- outlook web access安全性
- 国外邮箱安全性排名,国外邮箱哪个安全好用?
- 发现outlook的一个小漏洞
- 全站最新全详细Outlook Ntlm Relayx攻击方法复现
- outlook安全模式修复_Outlook Com安全漏洞Microsoft无法修复
- 你的Outlook真的安全?一条恶意规则远程攻陷你的工作站!
- 利用 outlook 2000 漏洞发送邮件的原理