函式式程式設計一些概念理解

2021-10-13 09:53:33 字數 1128 閱讀 6196

其實學習一種新的正規化是困難的——我們必須學會為熟悉的問題找到新的解答方法。

函式式程式設計將程式描述為表示式和切換,以數學方程的形式建立模型,並且盡量避免可變的狀態

閉包閉包(closure)是所有函式式語言都具備的一項平常特性,可是相關的論述卻常常充斥著晦澀乃至神秘的字眼。所謂閉包,實際上是一種特殊的函式,它在暗地裡繫結了函式內部引用的所有變數。換句話說,這種函式(或方法)把它引用的所有東西都放在乙個上下文裡」包「了起來。

閉包在生成的時候,會把引用的變數全部圈到**塊的作用域裡,封閉、包圍起來(故名閉包)。閉包的每個例項都保有自己的乙份變數取值,包括私有變數也是如此。

「閉包」名字**於它建立封閉上下文的行為

閉包作為一種對行為的建模手段,讓我們把**和上下文同時封裝在單一結構,也就是閉包本身裡面,像傳統資料結構一樣可以傳遞到其他位置,然後在恰當的時間和地點完成執行。

柯里化定義:柯里化指的是從乙個多參函式變成一連串單參函式的變換

通俗的話說,就是乙個逐次消元的過程

當把函式的元全消掉,就得到了值。

值就是零元函式。

這是個數學問題,不是個程式問題,反對用**來解釋lambda演算。(**某位知乎網友)我本人還是蠻喜歡這個答案的。

部分施用

部分施用是指通過提前代入一部分引數值,使乙個多引數函式得以省略部分引數,從而轉化為乙個引數數目較少的函式。

純函式純函式是沒有***的函式:它不引用其他值可變的類字段,除返回值之外不設定其他的變數,其結果完全由輸入引數決定。

緩求值緩求值是函式式程式語言常見的一種特性,指盡可能地推遲求解表示式

好處:昂貴的運算只有到了絕對必要的時候才執行

我們可以建立無限大的集合,只要一直接到請求,就一直送出元素

按緩求值的方式來使用對映、篩選等函式式概念,可以產生更高效的**

減少占用的儲存空間

緩求值集合有利於執行時產生更高效的**

引用透明性

發出呼叫的例程不比關心它的訪問物件真的是乙個值還是乙個返回值的函式。

C 一些概念理解

封裝 隱藏細節,資料和方法實行public,private,protece 繼承 不修改的前提下擴充套件功能 多型 將父類設定成於子類對等地執行操作 過載是函式名相同,引數不同 重寫是函式名相同,引數相同,子類重新定義父類的虛函式 1 類中有const和引用型別的成員。2 類中有某個成員類沒有pub...

一些概念理解(持續更新)

分布式 不同的業務模組部署在不同的伺服器上或者同乙個業務模組分拆多個子業務,部署在不同的伺服器上,解決高併發的問題 集群 同乙個業務部署在多台機器上,提高系統可用性 通俗易懂的小例子 小飯店原來只有乙個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房乙個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的...

Shell程式設計以及一些概念

shell解析器 解析shell指令碼,檢視 cat etc shellscentos預設的解析器是 bash 列印系統預設的shell解析器 echo shell shell是什麼是命令,類似windows的dos命令 又是一門程式語言,裡面含有變數 函式 邏輯控制語句等 shell指令碼是什麼s...