摘要:說明數據和操作解耦抽象化的功能函數組件更易復用和維護。說明一言以蔽之就是為每個參數返回一個函數。總結通過已有的函數進行組合最大程度的復用已有函數需要提前構思好抽象單元函數。
引言
在fp編程中,compose是一個重要應用場景,下面談論一些個人理解。
const R=require("ramda"); const data=[{ name:"gcy", sex:"male" },{ name:"ycg", sex:"female" }] const getName=R.compose( R.map(d => d.name), R.filter(d => d.sex=="male") ); console.log(getName(data));
說明 數據和操作解耦,抽象化的功能函數組件更易復用和維護。
上面filter做到了只接受謂詞函數作為唯一約束,自由變量是如何被過濾,這涉及到curry,如下所示。
var _ = require("lodash"); const Rfilter=function (predicate) { return function (data) { return _.filter(data,predicate); } } console.log(Rfilter( d => d.name=="gcy")(data));
說明 curry一言以蔽之就是為每個參數返回一個函數。好處是可以依賴透明,無觀察副作用,哈哈,其實所有fp純函數都有這個特性,其次簡化函數使用難度(相對來說,為curry而curry就得不償失了)和方便compose。
const {comp,pipeline,partial,inc,filter,sort}=require("mori"); const todos=[{ name:"g1", age:"20" },{ name:"g2", age:"21" },{ name:"g1", age:"22" }]; const sortByname=partial(sort,(x,y) => x.namex.age>=21); console.log(pipeline(todos,filterByAge,sortByname))
說明 無論普通的compose,partial,還是curry可讀性都不好,上面既具有組合性,同時管道式的閱讀方式看起來順暢,而不是自內向外,自右向左的函數式組合讀法。
總結通過已有的函數進行組合,最大程度的復用已有函數,需要提前構思好抽象單元函數。最近挺忙的,維護一后端寫的代碼A(){B()|C()},B(){C()},C(){D()}都是些全局函數,然后依賴一些全局變量,有極大的觀察副作用,同時沒有模塊化,零件無組織的散落個各個文件中,典型的反例,感觸頗深(>﹏<)。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83337.html
小編寫這篇文章的主要目的,主要是給大家去做一個解答,主要利用python去讀取和載入數據,其中包括讀取和寫入CSV文件,具體的一些詳細內容介紹,下面就給大家詳細解答下。 前言 CSV(Comma-Separated Values)即逗號分隔值,一種以逗號分隔按行存儲的文本文件,所有的值都表現為字符串類型(注意:數字為字符串類型)。如果CSV中有中文,應以utf-8編碼讀寫. 1.導入CS...
對于很多從事Python的人來說,有很多的人想要去進階的,比如學習跟多的一些知識,比如,我們在工作中會遇到,使用Python計算AUC的三種方式,下面給大家做出一個解答。 介紹 AUC(Area Under Curve),其實就是ROC曲線圍成的和下坐標軸圍成的一個面積,這個面積的數值一般是不會大于1的。 當然,ROC曲線基本上都在y=x,這條直線上面的一個正上方,因此AUC的正確值應該...
小編寫這篇文章的一個主要目的,主要是給大家就相關的具體內容做出一些詳細解答,比如了解使用python的相關知識,主要是涉及到python Opencv的一些相關知識,比如使用python Opencv實現停車位識別,就具體的內容,下面給大家詳細解答下。 1.怎么去實現 (1)第一是需要用到一個處理畫框的程序,將圖片中的有車和無車的停車位給畫出來,并且保存坐標(如果畫錯了,將鼠標移至要刪除的...
算法目前是比較火的一個領域了,其中,python作為算法的一種延伸,其應用范圍還是比較的廣泛的。那么,它其中有一個就是海象運算符,它的運算教程是什么呢?下面給大家一一的列舉,大家要仔細的閱讀哦。 前言 大家好,我是閑歡,你們的老相識呀! 海象可謂是最大的哺乳動物了,有人稱它是北半球的土著居民。它圓頭,短而闊的嘴巴,粗大的鼻子,上犬齒形成長達40厘米-90厘米的獠牙,每只4公斤以上。雄海象...
摘要:是可以被的容器類型。出自范疇論數學的一個分支滿足一些定律。滿足的定律是一種特殊的可以鋪平的結果。說明如果用普通第一層異常時會連續執行通過的方式可以在異常發生時無論怎么最后還是它自己從而可以在異常發生時避免不必要的錯誤執行。 functor functor是可以被map over的容器類型。 關于這句話比較難理解的是,什么是map over? (a -> b) -> f a -> f b...
閱讀 2624·2021-11-18 10:07
閱讀 1083·2021-08-03 14:04
閱讀 726·2019-08-30 13:08
閱讀 2579·2019-08-29 15:33
閱讀 1087·2019-08-29 14:07
閱讀 2985·2019-08-29 14:04
閱讀 1435·2019-08-29 11:19
閱讀 1144·2019-08-29 10:59