`
lc_wangchao
  • 浏览: 34178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Haskell学习笔记 2 柯里化

 
阅读更多

 

柯里化的概念很简单,但是在介绍它之前,我们先回顾一下之前我们所认识的函数。比如 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源代码】怎样用Javascript实现函数柯里化与反柯里化.docx

    怎样用Javascript实现函数柯里化与反柯里化  函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感;下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数...

    javascript实现函数柯里化与反柯里化过程解析

    函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感;下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数变换成接收一个单一参数(最初函数的第一个参数...

    haskell学习资料

    非常好的haskell学习资料,介绍了包括什么是haskell以及如何用haskell编写循环以及判断等基本编程方法。

    haskell学习最新资源:Beginning Haskell

    Beginning Haskell,作为Haskell的入门教材。书中不仅教授Haskell语言,而且还手把手教读者如何搭建Haskell开发环境。

    Programming in HasKell 2nd Edition

    Programming in HasKell 2nd Edition

    Programming.in.Haskell.2nd.Edition.pdf

    Programming in Haskell 第二版 pdf

    haskell-chart, haskell的2D 图表库.zip

    haskell-chart, haskell的2D 图表库 图 haskell的2D 图表库进一步的信息可以在关联的 wiki中找到。

    Javascript闭包与函数柯里化浅析

    闭包和柯里化都是JavaScript经常用到而且比较高级的技巧,所有的函数式编程语言都支持这两个概念,因此,我们想要充分发挥出JavaScript中的函数式编程特征,就需要深入的了解这两个概念,闭包事实上更是柯里化所不可...

    Haskell趣味学习中文版

    Haskell趣味学习中文版,从中文网站上在线转换成PDF,最后合并添加目录制作成的

    JS中精巧的自动柯里化实现方法

    以下内容通过代码讲解和实例分析了JS中精巧的自动柯里化实现方法,并分析了柯里化函数的基础用法和知识,学习一下吧。 什么是柯里化? 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个...

    Programming_in_Haskell_2016_2ndE

    Haskell 函数式程序设计语言 经典教材 2016年第二版 Haskell is a purely functional language that allows programmers to rapidly develop software that is clear, concise and correct. This book is ...

    PPT of Programming-in-Haskell-2nd-Edition

    Progrtamming in Haskell 2nd edition ppt仅供学习,禁止用于商业行为。Progrtamming in Haskell 2nd edition ppt仅供学习,禁止用于商业行为。Progrtamming in Haskell 2nd edition ppt仅供学习,禁止用于商业行为...

    learn you a haskell

    Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母“λ”(Lambda)作为自己的标志。Haskell语言的最重要的两个应用是Glasgow Haskell ...

    详解JS中的柯里化(currying)

    curry化来源与数学家 Haskell Curry的名字 (编程语言 Haskell也是以他的名字命名)。 柯里化通常也称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,...

    通过实例了解Javascript柯里化流程

    而这篇文章主要是想向大家讲清楚柯里化这个概念。 什么是柯里化 首先我们先来看一个例子: function sum(a, b, c) { return a + b + c; } // 调用 sum(1, 2, 3); // 6 上述函数实现的是将a,b,c三个参数相加,改写...

    Programming-in-Haskell-2nd-Edition.pdf

    Programming-in-Haskell-2nd-Edition.pdf

    Javascript柯里化实现原理及作用解析

    函数式编程是一种如今比较流行的编程范式,它主张将函数作为参数进行传递,然后返回一个没有副作用的函数,说白了,就是希望一个函数只做一件事情。...上述函数实现的是将a,b,c三个参数相加,改写为柯里化函数如下:

    haskell 学习资料

    haskell 是一种比较基础的函数式语言,比较适合初学者学习,语言非常优美,本资料是比较权威的haskell学习资料

    haskell 2010 part2

    haskell 2010 haskell 2010

Global site tag (gtag.js) - Google Analytics