版權(quán)所有 ? 2018 林鵬程, 保留所有權(quán)利。
? 左耳朵耗子 《什么是函數(shù)式編程?》寫的純函數(shù)管道方法我在QQ群、微信群里說過好多年了,在2017年1~3月的推特和微博,也發(fā)過幾篇相關(guān)的短文,我的項(xiàng)目也應(yīng)用了該方法。
? ? Clojure語言一直都是極力推崇這寫流水線寫法,提供了語言級的支持,->>宏寫法更漂亮。只是編程人員有下力氣去這么做的人少而已, 畢竟設(shè)計(jì)一條流暢的流水線了是一件比較費(fèi)時(shí)間的事。不過是一堆老概念, 耳熟能詳?shù)臇|西,Unix和FP都出了多少年了。
? ? 管道流水線最早的思想就是模擬工業(yè)流水線, FP最早的思想就是模擬機(jī)器組裝,兩者都對大工業(yè)的模仿,數(shù)學(xué)只是FP用來裝點(diǎn)門面的, 這叫內(nèi)用黃老,外示儒術(shù),說一套,做一套,古今中外都有。
? ? 對于純函數(shù)管道方法,以前我在QQ群、微信群里講過一個(gè)更容易理解的借喻:把數(shù)據(jù)當(dāng)成電流,函數(shù)當(dāng)成各種設(shè)備或電器,數(shù)據(jù)(電流)從電廠出發(fā),經(jīng)過高壓線,配電設(shè)備,電表,電線等純函數(shù),最終到達(dá)電器做功產(chǎn)生副作用,完成使命結(jié)束。
? ? 基于上例,一個(gè)純函數(shù)管道數(shù)據(jù)流由純函數(shù)構(gòu)成,最多只有一個(gè)副作用函數(shù),且只能在末尾,可以沒有副作用。純函數(shù)管道數(shù)據(jù)流的作用,主要是實(shí)現(xiàn)數(shù)據(jù)流和邏輯流分離,方便重用、組合、維護(hù)、并發(fā)、擴(kuò)展。
? ? 快2018年春節(jié)了,我再發(fā)一遍2017年春節(jié)在微博發(fā)的一個(gè)clojure數(shù)據(jù)流祝福代碼,中文表達(dá)是: 把各種祝福放在福袋里, 送給大家.
(-> []
? ? (conj "新年快樂")
? ? (conj "幸福安康")
? ? (conj "事業(yè)發(fā)達(dá)")
? ? (->> (assoc {} :大家))) ????
附文:《左耳朵耗子:什么是函數(shù)式編程?》網(wǎng)址
https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2651001208&idx=1&sn=88e9bf49f5a2bc095dde59642968dbac&chksm=bdbee92b8ac9603dcdc37278f47f1f97c25ed371c51f01041db45b3730f87da3ba8118cbddd7&mpshare=1&scene=1&srcid=02126bOIcpSrotvnqbUVJlcg#rd