Haskell入门(五)高阶函数(higher-order functions)

参考教材:Learn You a Haskell for Great Good (http://learnyouahaskell.com/)

操作环境:Ubuntu下Linux64位虚拟机

python入门编程, 之后用c++学习数据结构,Haskell萌新。

由于对Haskell中一些词语的中文翻译并不了解,接下来的内容中重点名词将有英文和我理解的中文。


Chapter5主要内容

调制函数(curried function)

在前面学习的函数里,我们理解的函数通常接受一个或多个参数(parameter),并返回对应的结果,而这个结果也通常以参数的形式表示。这里我们讨论调制函数。调制函数总是仅仅接受一个参数,不同的是它返回值可以是函数,返回的函数可以再接受下一个参数,以此类推。

例子:max

我们在前面的学习过程里用到的max获取两个可以比较优先级的同类参量,返回其中的较大值。从调制函数的角度思考这个函数,我们会有另外的发现。

max函数

通过:t max 我们可以看到max函数的声明。由于->符号是右结合的,我们又可以把它写成a -> (a-> a)的形式。也就是说,max函数获取一个参数,返回声明为a->a类型的函数。如果我们输入max 4,我们获取到的正是这个函数。然而,由于Haskell并不了解a->a类型的函数要怎么输出,这一输入在命令行状态下会报错。

不完全函数(partially applied function)

不完全函数是指,我们仅为某个函数提供了它所需要的部分参数,因而从调制函数的角度,它会返回一个需要若干个我们未提供的参数的函数。可以理解成一系列化学变化,我们只提供了足够其中一部分步骤需要的原料(中间产物),因而并不能直接得到最终需要的结果。

例子:multThree函数


不完全函数

按照前几章学习的内容,上面的multThree函数本身需要三个参数。当我们仅仅提供一个参数时,由调制函数的观念,我们会得到一个需要两个参数的不完全函数。这个不完全函数可以用于后续应用。

例子:使用分块(section)实现不完全中序函数

中序函数通常输出针对二元函数而言的。为了实现一个不完全中序函数,我们仅仅需要对它的实现的整个步骤加上括号,略去缺省的部分。

不完全中序函数的实现

常见功能的实现


函数间的调用

下面是map函数与filter函数的使用。注意到,由于内部也有叫map和filter的函数,导入baby.hs文件会由于有歧义而报错。一种解决方案是改变新定义的名称,例如加上'。不知道haskell里面有没有类似于c++ ::限制域的标识符。

map与filter函数


函数的复合应用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容