15 第十五章 建立可組合函式庫

2021-06-02 12:52:07 字數 967 閱讀 4760

15 第十五章 建立可組合函式庫

本章介紹

■ 設計函式式連線符庫

■ 處理時變值

■ 組合時變值與繪圖

■ 開發金融合同模型庫

函式式程式設計表現出來的很多方面的設計原則,是可組合性(compositionality)。這意味著,可以使用組合操作,從幾個基元構建出複雜的結構。我們將描述一般意義上的可組合化,因為它可以以無數的形式出現。讓我們看兩個例子,你已經很熟悉了。

我們首先從 f# 型別系統開始:有幾個基元型別,比如整數和布林值,而且可以組合它們,比如,使用 * 型別建構函式,構建 int * bool 元組型別。如果我們不考慮 f# 的物件導向功能,只有三種方法進行組合:使用元組的多值,使用差別聯合的可選值和函式。這可以用來構建非常豐富的型別。

可組合設計的第二個示例是處理列表的 f# 庫。可以使用這個庫作為靈感,來教我們如何寫好函式式的庫。這次所涉及的基元是從零開始建立列表的操作,那些可以將其應用到現有的列表,如 list.filter、 list.length,等等。我們可以單獨使用基元,但更常見的是,把它們組合成乙個列表處理單元,使用流運算子 (|>)。這種組合的設計也是宣告式(程式設計)的基本要素。我們能夠描述想通過組合基元、或者以前生成的派生的元件,達到什麼目的。

我們在這一章的主要例子是建立動畫庫。我們使用自下而上(bottom-up)的方法,描述這個庫。這意味著,我們討論本章的大部分都是非常簡單的。將看到幾個基元,有表示隨時間改變的值,也有表示繪圖的簡單方法。可組合庫的好處在於,每個元件容易生成、理解和測試。重點在於,我們什麼時候開始把這些構建塊放到一起。在這種情況下,我們不僅組合相同的領域的基元,而且把兩個領域放到一起:隨著時間的而變的繪圖,實際上是定義動畫。這有點像使用  linq to xml,這是 xml api,設計用來處理 linq to objects 的。一旦能夠以自然的方式組合庫,**會更可讀和靈活。

顯示這種方法效果,可以用商業世界,以及像動畫的遊戲示例,我們將以這樣的示例結束這一章,用可組合和函式方式描述金融合同。

Python筆記整理15 第十五章 演算法

演算法 解決特定問題的方案 一 衡量演算法的好壞 1 時間複雜度 演算法執行的時候執行規模 頻度。最好執行次數 平均執行次數 最壞執行次數 為準 常數時間複雜度 在任何時刻訪問時間複雜度都是一致的。o 1 x 1y 2 o n 根據n的大小變化的時間複雜度 一層迴圈就是o n n 5for i in...

ocp 042 第十五章 執行資料庫備份

備份解決方案 rman和 oracle secure backup 提供了端到端的解決方案 對檔案系統資料和 oracle 資料庫使用集中式磁帶備份管理 對 rman 備份使用以最合理方式進行了整合的介質管理層 可備份網路任何位置的任何資料 使用者管理的方案 指通過手動過程來跟蹤備份需求和狀態 db...

C語言 第十五章 字元與字串常用處理函式

一,字元處理函式 stdio.h 標頭檔案中宣告的兩個字元處理函式 1,字元輸出函式putchar prtchar 65 a pruchar a a int a 65 putchar a a 上面的三種用法,輸出的都是大寫字母a putchar 一次只能輸出乙個字元,printf 可以同時輸出多個字...