函式式程式設計的三個核心問題 計算的構建 求值 關係

2022-06-27 09:39:15 字數 959 閱讀 2548

函式式程式設計的三個核心問題:計算的構建、求值、關係

一、關係:

1、函式與函式的關係:引用、無關;

2、函式與值的關係:輸入輸出、上下文;

3、值與值的關係:引用、因果;

二、計算的構建:

1、輸入輸出流的平凡構建;簽名相容的函式呼叫鏈構建;無高階函式,構建器compose pipeline本身是高階函式;

2、函式作為參量引用鏈的構建;

3、monad+高階函式的型別推演鏈構建;構建的形式相當於普通資料結構的單向或雙向鍊錶;

三、求值(計算)的執行:

1、輸入

1)平凡值:普通的變數

2)訊號源:響應式程式設計中的輸入;

3)非同步計算:將非同步計算封裝為乙個特殊的值;

4)io流:同步或非同步的io事件或資料流;

2、計算的執行

1、顯式呼叫:計算結構完成後顯式呼叫計算的整體結構;

2、構建呼叫:在引入後繼計算時,計算當前和引入計算的階段計算結果儲存進乙個monand中,供後即計算使用;

3、非同步或io流注入,觸發呼叫事件;

4、回溯呼叫:計算構建完畢後,由末端節點觸發求值,求值請求沿著計算節點在源頭觸發求值;計算結構是由monad鏈結起來的雙向鏈結構;

push\pull\observer;

四、構建與計算的關係:

先構建計算,再呼叫計算結構執行計算;構建的過程只有計算關係的構建,只有函式的組裝,沒有求值的過程。

邊構建邊計算;每引入乙個計算後,就執行階段性計算結果;計算結果儲存進乙個monand中,供後即計算使用;

五、同步與非同步

同步:1、無monad參與的計算構建:求值過程遵從先構建再求值的過程;

2、有moand參與的計算構建:邊構建邊計算,計算的輸入和結構都有monand作為上下為儲存。moand同事作為計算結構連線節點的作用;

非同步:moand作為封裝非同步資料的上下文參與計算的構建和計算的執行。

分布式系統的核心問題

分布式系統的核心問題 主要內容 一致性問題 共識問題 一致性 分布式集群中多個服務節點,對給定的操作,根據給定的協議,對處理結果對外保持一致.不在乎結果是否正確,而是保證對外呈現的狀態一致.所有節點失敗也是一種一致.引起不一致的因素 節點間網路通訊的不可靠,訊息延遲,訊息亂序,內容錯誤.節點處理時間...

分布式架構的核心問題

1.這麼多服務,客戶端該如何訪問?2.這麼多服務,服務之間如何進行通訊?3.這麼多服務,如何治理?4.服務掛了怎麼辦?springcloud生態用來解決以上分布式架構問題,最早的代表是spring cloud netfilx 但2018年底,netfilx無限期停止維護sprincloud生態了 a...

函式的三個角色

function fn fn.prototype.getx function var f1 new fn this 是 f fn.a 1000 作為乙個普通物件 f.num undefined f.a undefined var res fn this 是 window普通函式 它本身就是乙個普通的...