函數式編程與異步編程


函數式編程與異步編程

 

函數式編程中,異步編程是惰性計算的根源,惰性計算是函數式異步編程的支持;

 

1、高階函數都具有計算構建的功能;

2、函數式編程語言對異步編程的支持是通過惰性求值機制實現的;

3、惰性計算的變量在語言或機制的底層需要保存;在接口層面,通常是作為高階函數的參量,需要特定的修飾符修飾;

4、惰性求值包含變量的惰性求事和計算的惰性求值,通常重點強調計算的惰性求值

5、高階函數作為算子,要區別是否包含惰性計算;

無惰性計算的高階函數:構建參量函數、配置高階函數參量、調用執行;

有惰性計算的函數:構建參量函數、配置高階函數參量、調用高階函數完成計算保存;

 

在 Miranda 和 Haskell 中,缺省延遲函數實際參數的求值。在很多其他語言中,可以使用特殊語法明確懸置計算來延遲求值(比如 Scheme 的 "delay" 或 "force")

 

swift對惰性求值的支持:@escaping

 

在Scala里,通過lazy val來指定一個變量是惰性求值的

 

 

函數式編程語言還提供惰性求值(Lazy evaluation,也稱作call-by-need),是在將表達式賦值給變量(或稱作綁定)時並不計算表達式的值,而在變量第一次被使用時才進行計算。

 

某些編程語言缺省延遲表達式的求值,另一些提供函數或特殊語法來延遲求值。在 Miranda 和 Haskell 中,缺省延遲函數實際參數的求值。在很多其他語言中,可以使用特殊語法明確懸置計算來延遲求值(比如 Scheme 的 "delay" 或 "force"),更一般的通過把一個表達式包裝在 thunk 中。表示這種明確延遲求值的對象叫做預期或承諾。

https://www.cnblogs.com/feng9exe/p/8659699.html

 

函數式結構樹的構建過程只是計算的綁定的過程;從執行的角度看它有另一個術語“惰性求值”:

函數式編程語言還提供惰性求值(Lazy evaluation,也稱作call-by-need),是在將表達式賦值給變量(或稱作綁定)時並不計算表達式的值,而在變量第一次被使用時才進行計算。

某些編程語言缺省延遲表達式的求值,另一些提供函數或特殊語法來延遲求值。在 Miranda 和 Haskell 中,缺省延遲函數實際參數的求值。在很多其他語言中,可以使用特殊語法明確懸置計算來延遲求值(比如 Scheme 的 "delay" 或 "force"),更一般的通過把一個表達式包裝在 thunk 中。表示這種明確延遲求值的對象叫做預期或承諾。

The benefits of lazy evaluation include:

  • The ability to define control flow (structures) as abstractions instead of primitives.

 

 

惰性求值的管理:處理函數的保存、處理函數的執行(apply)。

https://www.cnblogs.com/feng9exe/p/9785638.html

 

swift對惰性求值的支持:@escaping

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM