函式式程式設計

2022-03-27 06:32:45 字數 949 閱讀 3590

由於讀的是北大的ppt,所以這篇基本屬於讀書筆記,不太容易整理成通順的文章。

首先理解函式式程式設計,在普通語言或者說用的比較多的命令式語言(如c/c++的c子集),函式其實到處可見,拋去函式式程式設計,其他程式語言都有「函式這個概念」。函式經常被用到,以至於不被重視。函式式計算的集合,是程式語言提供給我們的乙個抽象概念,讓我們在這個概念之上進行思考,也就是封裝。任何一門高階語言都必定會提供一定的抽象能力給programmer去用,從而提高程式設計效率。物件導向也是,個人覺得物件導向提供了更高層次的抽象,更高階別的封裝。更利於人們理解程式。當然這也不是一定的,主要還是看程式設計師的能力。(思考:因此是不是說抽象能力可以從某種層次上反映乙個程式設計師的程式設計能力呢,程式設計師程式設計應該站在抽象的層次而不是底層的技術細節上)。回歸正題,那函式式程式設計必定也會提供函式抽象了。那函式式程式設計與其他程式語言的區別在**呢,函式式程式設計中有一句話經常被提到「函式是一等公民」。什麼是一等公民,就是享有各種權利。在程式語言中權利是哪些方面呢,因為也剛開始學習函式式程式設計,所以可能總結的不對,例如可以被當做變數賦值,當做引數以及返回值。這裡要和c的函式指標區分開(c的函式在**區,只有讀的許可權,如果去修改函式指標會發生segment fault,因此只提供了部分函式式程式設計的特性,肯定有有不支援的方法),函式式程式設計中函式式作為乙個「物件」來對待的,既然是「物件」那就應該可以像變數一樣進行操作。函式式程式設計不僅僅提供函式級別的抽象這種簡單的功能(像其它程式語言),更重要的是提供計算過程的抽象。因此理解了這點再去學習函式式程式設計便會容易的多,舉例函式式程式設計中為什麼可以以函式作為引數是因為在計算中只有小部分計算有所不同,其它都一樣。這樣我們就需要將這「不同的小部分」作為函式傳入其中。函式式程式設計可以將函式作為返回值,是因為可以在函式中通過對傳入的函式重新包裝生成新的函式(有點繼承的意思)。

ambda為例。lambda即是匿名函式。在函式中,scheme支援塊作用域,允許函式在函式中定義,這樣是為了方便組織**。同時很多函式由於是一次性的,沒有必要命名,一次就以lambda的形式表示出來了。

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

函式式程式設計

最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...

函式式程式設計

維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...