柯里化的概念很简单,但是在介绍它之前,我们先回顾一下之前我们所认识的函数。比如 max,我们习惯于这样调用它:
Prelude> max 5 6
6
我们认为,max函数接受两个参数 5 和 6 并返回它们之中最大的结果,很顺理成章的想法。可是lamda函数只能是单一输入并且单一输出, 因此实际上,Haskell会这么解释它
(max 5) 6
怎么解释呢?首先,max函数接收单一输入5,并返回一个函数。这个函数同样会接收一个输入并返回它和5之中最大的数字。嗯,在命令行中这样做也是等价的
Prelude> let a = (max 5)
Prelude> a 6
6
这就是柯里化。
因此,在Haskell的世界里,不存在多输入的函数,所有的函数都只有一个输入和一个输出,只是输出有何能是值也有可能是函数(实际上,数字在lamda演算中同样 被看作为函数)。
所以当你查看max的类型时,是这样显示的:
Prelude> :t max
max :: Ord a => a -> a -> a
柯里化为函数的处理提供了极大的灵活性,我们可以由一个函数方便地生成另外一个函数,区别于图灵机的状态存取,函数式编程则注重于描述函数之间的关系。因此,基于这种思想 ,要解决一个问题,我们关注的是“做什么”而不是“怎么做”。
分享到:
相关推荐
怎样用Javascript实现函数柯里化与反柯里化 函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感;下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数...
函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感;下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数变换成接收一个单一参数(最初函数的第一个参数...
非常好的haskell学习资料,介绍了包括什么是haskell以及如何用haskell编写循环以及判断等基本编程方法。
Beginning Haskell,作为Haskell的入门教材。书中不仅教授Haskell语言,而且还手把手教读者如何搭建Haskell开发环境。
Programming in HasKell 2nd Edition
Programming in Haskell 第二版 pdf
haskell-chart, haskell的2D 图表库 图 haskell的2D 图表库进一步的信息可以在关联的 wiki中找到。
闭包和柯里化都是JavaScript经常用到而且比较高级的技巧,所有的函数式编程语言都支持这两个概念,因此,我们想要充分发挥出JavaScript中的函数式编程特征,就需要深入的了解这两个概念,闭包事实上更是柯里化所不可...
Haskell趣味学习中文版,从中文网站上在线转换成PDF,最后合并添加目录制作成的
以下内容通过代码讲解和实例分析了JS中精巧的自动柯里化实现方法,并分析了柯里化函数的基础用法和知识,学习一下吧。 什么是柯里化? 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个...
Haskell 函数式程序设计语言 经典教材 2016年第二版 Haskell is a purely functional language that allows programmers to rapidly develop software that is clear, concise and correct. This book is ...
Progrtamming in Haskell 2nd edition ppt仅供学习,禁止用于商业行为。Progrtamming in Haskell 2nd edition ppt仅供学习,禁止用于商业行为。Progrtamming in Haskell 2nd edition ppt仅供学习,禁止用于商业行为...
Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母“λ”(Lambda)作为自己的标志。Haskell语言的最重要的两个应用是Glasgow Haskell ...
curry化来源与数学家 Haskell Curry的名字 (编程语言 Haskell也是以他的名字命名)。 柯里化通常也称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,...
而这篇文章主要是想向大家讲清楚柯里化这个概念。 什么是柯里化 首先我们先来看一个例子: function sum(a, b, c) { return a + b + c; } // 调用 sum(1, 2, 3); // 6 上述函数实现的是将a,b,c三个参数相加,改写...
Programming-in-Haskell-2nd-Edition.pdf
函数式编程是一种如今比较流行的编程范式,它主张将函数作为参数进行传递,然后返回一个没有副作用的函数,说白了,就是希望一个函数只做一件事情。...上述函数实现的是将a,b,c三个参数相加,改写为柯里化函数如下:
haskell 是一种比较基础的函数式语言,比较适合初学者学习,语言非常优美,本资料是比较权威的haskell学习资料
haskell 2010 haskell 2010