函數(shù)式編程圣經(jīng)

      網(wǎng)友投稿 745 2022-05-30

      上帝看到約翰·麥卡錫發(fā)明了表處理語(yǔ)言 Lisp,卻只用來(lái)學(xué)術(shù)研究,很是傷心,就把 Lisp 解釋器的秘密告訴了他的學(xué)生斯蒂芬·羅素,斯蒂芬·羅素將eval函數(shù)在IBM 704機(jī)器上實(shí)現(xiàn)后,函數(shù)式編程的大門第一次向人類打開(kāi)了。

      這個(gè)平行宇宙的上帝思想獨(dú)特,他說(shuō):“?要有不變量”

      上帝又說(shuō): “函數(shù)應(yīng)該是純粹的(純函數(shù))”

      不能修改傳遞給函數(shù)的變量!

      不能修改全局變量!

      對(duì)于同樣的輸入?yún)?shù),返回值總是相同的!

      下面的函數(shù)是被允許的,每次調(diào)用,返回值都相同,可以安全地調(diào)用,直到宇宙毀滅。

      這樣的函數(shù)在函數(shù)式宇宙中是不允許的,因?yàn)榈诙握{(diào)用就會(huì)導(dǎo)致函數(shù)式宇宙的毀滅。

      這個(gè)函數(shù)是不被允許的,它竟然想修改輸入?yún)?shù)!

      如果函數(shù)返回了一個(gè)新的數(shù)組,而沒(méi)有改變?cè)械闹担呛瘮?shù)式上帝很高興。

      人類對(duì)于上帝立下的規(guī)矩表示迷惑不解: are you kiding me ?

      人類嘗試著寫程序,由于不變量的規(guī)定,發(fā)現(xiàn)連個(gè)最基本的for 循環(huán)都搞不定。

      人類迷惑不解:“有沒(méi)有搞錯(cuò), 我們?cè)趺磳懷h(huán)?”

      上帝說(shuō):“你們用循環(huán)干什么?”

      人類寫了一段代碼。

      上帝說(shuō):要有遞歸!

      上帝也寫了一段代碼:

      函數(shù)式編程圣經(jīng)

      人類說(shuō):“這雖然能完成工作,但是好像不太直觀啊!再說(shuō),親愛(ài)的上帝,如果我那個(gè)list容量很大,遞歸層次很深,會(huì)不會(huì)出現(xiàn)棧溢出?”

      上帝說(shuō):“沒(méi)事,我有尾遞歸,保證不溢出。這種遞歸的寫法,你們慢慢就習(xí)慣了。”

      (友情提示:尾遞歸在《張大胖學(xué)遞歸》中有描述)

      上帝發(fā)現(xiàn)很多函數(shù)大體上都是相同的,只有部分細(xì)節(jié)不一樣,有很多重復(fù)代碼,太浪費(fèi)了。

      上帝說(shuō):“要有高階函數(shù)!”

      讓函數(shù)來(lái)生成函數(shù),把公用的部分抽取出來(lái),不共用的部分與共用部分能組合起來(lái)。

      上帝提供了幾個(gè)很好用的高階函數(shù),如map,filter, fold等,讓人類快速高效地去操作集合數(shù)據(jù)。

      上帝對(duì)自己的工作很滿意。仿佛程序世界的框架已經(jīng)基本完成,只剩下邊邊角角的實(shí)現(xiàn)了。

      可是這個(gè)宇宙的人類總是抱怨函數(shù)式編程太難,看到這里的上帝不愿意改變,有很多人都穿越到編號(hào)為S-87那個(gè)所謂“面向?qū)ο蟆钡挠钪嫒チ恕?/p>

      上帝嘆了口氣:“你們吶,目光短淺,摩爾定律已經(jīng)失效,多核時(shí)代已經(jīng)來(lái)臨,我們函數(shù)式編程天生是為并發(fā)編程而生的啊,你看看函數(shù)沒(méi)有side effect,不共享變量,可以安全地調(diào)度到任何一個(gè)CPU core上去運(yùn)行,沒(méi)有煩人的加鎖問(wèn)題,多好啊!”

      過(guò)了兩天,隔壁 S-87 宇宙的面向?qū)ο笊系蹃?lái)串門了。

      面向?qū)ο笊系壅f(shuō):“親愛(ài)的函數(shù)式上帝,聽(tīng)叛逃者,不,投誠(chéng)者,啊,是穿越到我那里的人說(shuō),你這個(gè)宇宙有個(gè)叫做函數(shù)式編程的寶貝?”

      函數(shù)式上帝:“還寶貝?!人都跑光了!”

      “你給我講講吧,到時(shí)候我再勸他們回來(lái)。”

      函數(shù)式上帝于是給他講了自己創(chuàng)世紀(jì)時(shí)立下的規(guī)矩,還講了很多他打算在第6天,第7天告訴人類的知識(shí),什么Currying, 惰性求值,宏(macro)等等。

      面向?qū)ο笊系郾硎靖兄x,喜滋滋地回去了。

      后來(lái),函數(shù)式上帝聽(tīng)說(shuō)面向?qū)ο蟮挠钪娉霈F(xiàn)了不少混合式風(fēng)格編程的語(yǔ)言 OOP + FP (Functional Programming),也就沒(méi)多少人再回到自己的宇宙了。

      函數(shù)式上帝什么都沒(méi)說(shuō),嘆了口氣。

      函數(shù)式上帝決定休息。

      函數(shù)式上帝繼續(xù)休息。

      這就是為什么函數(shù)式世界的程序員能休息兩天的來(lái)歷。

      喜歡本文的朋友們,歡迎長(zhǎng)按下圖關(guān)注訂閱號(hào)程序員小灰,收看更多精彩內(nèi)容

      算法

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:手把手教你玩轉(zhuǎn)黑白圖片上色【玩轉(zhuǎn)華為云】
      下一篇:安卓應(yīng)用正在用這些方式“偷窺”你的數(shù)據(jù)
      相關(guān)文章
      亚洲另类自拍丝袜第五页| 亚洲av乱码一区二区三区| 亚洲中文字幕无码亚洲成A人片| 日韩亚洲Av人人夜夜澡人人爽| 亚洲成A人片在线观看WWW| 亚洲人成色7777在线观看不卡| 日韩亚洲人成网站| 国产成人亚洲精品蜜芽影院| 日韩欧美亚洲国产精品字幕久久久 | 亚洲综合一区二区精品久久| 久久夜色精品国产噜噜亚洲AV| 亚洲色无码专区在线观看| 亚洲综合伊人久久大杳蕉| 激情97综合亚洲色婷婷五| 亚洲午夜av影院| 亚洲色成人网站WWW永久| 亚洲日韩精品A∨片无码| 精品久久久久久亚洲| 国产亚洲美女精品久久久久狼| 久久91亚洲人成电影网站| 亚洲AV中文无码字幕色三| 久久丫精品国产亚洲av不卡| 亚洲综合男人的天堂色婷婷| 亚洲国产精品综合久久网各| 亚洲AV无码一区二区三区牛牛| 亚洲乱码日产精品一二三| 精品国产日韩亚洲一区91| 亚洲国产精品激情在线观看 | 无码欧精品亚洲日韩一区夜夜嗨| www.亚洲精品| 亚洲性猛交XXXX| 久久久久亚洲av无码专区蜜芽| 亚洲天天在线日亚洲洲精| 亚洲精品亚洲人成在线观看麻豆| 亚洲天堂福利视频| 亚洲精品一卡2卡3卡四卡乱码| 自拍偷自拍亚洲精品偷一| AV在线播放日韩亚洲欧| 国产∨亚洲V天堂无码久久久 | 国产精品亚洲一区二区无码| 久久久久亚洲av毛片大|