首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ML函数currying

ML函数currying
EN

Stack Overflow用户
提问于 2012-10-16 09:29:54
回答 1查看 2K关注 0票数 3

有没有人能给我解释一下拍马的概念。我之所以学习它,主要是因为我们在我的“现代编程语言”课上学习ML,以学习函数式语言入门。

特别是,您可以使用此示例:

代码语言:javascript
复制
    -fun g a = fn b => a+b;
      val g = fn: int -> int -> int
    -g 2 3;
      val it = 5 : int

我搞不懂这些参数是如何传递的,或者根本就不知道该怎么考虑它。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 15:03:37

在这种情况下,您需要显式地使用currying,因此应该更容易理解。

如果我们阅读函数定义,它会说:“创建一个函数g,当给出一个a时,它将返回fn b => a+b。”

也就是说,如果我们调用g 2,我们会得到函数fn b => 2+b。因此,当我们调用g 2 3时,我们实际上调用了(g 2) 3;也就是说,我们首先得到上面声明的函数,然后在值3上使用这个函数,产生5

Currying简单地说就是在几个“阶段”中创建一个函数的概念,每个阶段都接受一个输入并产生一个新函数。对于这一点,SML有语法上的优势,使g等同于:

代码语言:javascript
复制
fun g a b = a + b;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12906348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档