Scala函数式编程

Funtional Programming in Scala

若从学院派的角度来讲,此书对于讲解函数式,或可称为异端,因为它没有冗长晦涩的理论讲解与分析;若从学习Scala的角度来看,或可视作另类,因为它通篇没有介绍Scala的语法。这是否意味着她两边都不讨好呢?——非也!这实际得看读者的水平和期望。

我不愿意盲目推荐,免得误人子弟。要阅读此书,必得具备以下两个条件。其一是具备一定的Scala知识,尤其是高阶函数,模式匹配以及尾递归的知识。其二是对函数式编程满怀着渴望,并且不拒绝大量的编码练习。

阅读之前,先扪心自问。若不具备这两个条件,奉劝读者诸君远离此书,免得浪费你的时间。

好了,通过这一关,我得努力给您推销此书的好了。

我其实深深折服于本书第一章向我们打开的函数式世界。原来,代码可以这样写。好像口念咒语一般,神奇的魔法打开了异度空间,那里充满了绚烂、无穷以及未知。其实,这个空间无处不在,只是我们沉迷于面向对象的世界,成为了哥白尼之前的世人,以为面向对象就是程序员的全部世界。

这一章的案例可以让我们极度快速的明白函数的真谛,以及函数式编程带来的益处。

虽然是实践类的书籍,但它与Martin Odersky的Programming in Scala不同,它或者通过正文或者通过Sidebar或者通过注释,时时刻刻向读者传达函数式世界的专有术语。例如书中提到的pure function、referential transparency(RT)、subsitution model、monads、strictness等概念。这使得对函数式编程并不了解的读者,可以通过阅读本身,扩充自己的知识库,进而成为交流的基础。显然,这比单纯了解某种语言的语法有用许多。

本书的一个特殊之处在于她选择了Scala库中的一些设计元素作为案例,并以纯函数的方式重新实现,例如实现了自己的List、Option、Either、Stream等。这种方式有些取巧,实则恰如其分的找到了一个切入点。因为读者熟悉Scala,故而对这些例子并不陌生,这就降低了学习的难度;同时,它又极其符合函数式编程的特征,且能够基于这些设计元素传达函数式思想;额外的奖励更是让读者更加深入地掌握了Scala的语法本质;真可谓一举三得啊!

然而,我不得不提醒读者。若要阅读此书,需得完成本书的练习方有收获。这些练习就是作者设置的拦路虎,它让我们的阅读变得举步维艰。坦白说,时至今日,我还在慢慢地阅读本书的第五章呢。真是“路漫漫其修远兮,吾将上下而求索”啊!但我能清晰地感觉到自己的变化。就在阅读完第三章Functional Data Structures后,我感觉自己对模式匹配、泛型、高阶函数有了更深入地理解,也能够非常自如地运用map、flatMap、filter等操作,对List也有了更深入的理解。

虽然阅读并不顺畅,但只要你能看到自己的一点点进步,我想一定会有热情推动着你继续阅读,即使需要排除艰险。读书未必快乐,然而耽于安逸亦未必赐予你幸福;至少我相信,知识的汲取总会给你回报,这份回报又岂止是快乐那么简单!


阅读建议I

要练习本书案例,没有必要使用专业的IDE。然而,Scala提供的交互式窗口又不太适合我们输入代码。当然,我们也可以使用诸如Sublime编写代码,再到交互式窗口中以:l命令加载代码文件。可这种交互并不方便。所以,建议大家下载由上海广谈信息技术有限公司开发的开源软件ScalaConsole,它非常适合用来尝试scala语言特性、标准库及第三方库的api使用方法。

阅读建议II

本书练习一定要做,虽然某些练习有些难。大家或许会想,即使做了,我该怎么知道解题是否正确,又或者是否有更好的方案?所幸,本书作者在其github上给出了全书所有练习的答案,你可以下载它们,作为参考。不过你得忍住诱惑,只有在通过了充分思考,确定解题有难度时,才能阅读答案,否则就弱化练习的好处了。

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

推荐阅读更多精彩内容