函式式程式設計的一點理解

2021-08-01 11:25:25 字數 626 閱讀 3963

今天接觸了函式式程式設計,學習一下。

概念:函式式程式設計是一種程式設計模型,將計算機運算看做是數學中函式的計算,並且避免了狀態以及變數的概念。

(1)函式式程式設計的第一型,高階函式

在物件導向程式設計中,我們把物件傳來傳去,那在函式式程式設計中,我們要做的是把函式傳來傳去,而這個,說成術語,我們把他叫做高階函式。

(2)惰性計算

在惰性計算中,表示式不是在繫結到變數時立即計算,而是在求值程式需要產生表示式的值時進行計算。

(3)變數不變

賦值模型,同乙個函式,同乙個引數,卻會在不同的場景下計算出不同的結果,這是在數學函式中完全不可能出現的情況。函式無論在什麼場景下,都會得到同樣的結果,這個我們稱之為函式的確定性。

這也是賦值模型與數學模型的不相容之處。而函式式程式設計取消了賦值模型,變數一經賦值,永遠不變。

(4)遞迴

用遞迴做為控制流程的機制。

(5)併發

沒有狀態,沒有賦值,就從根本上排除了併發問題。

(6)主要應用場景

純函式計算、並行程式等。

關於程式設計的一點理解

程式設計就是使用者告訴計算機要執行哪些操作,程式可以用不同的計算機語言書寫,編輯好的程式是靜態的,它儲存在計算機中,程式只有被執行才會產生相應的效果,正在執行的程式叫做程序,程序這個概念是非常重要的,作業系統對於併發程式的控制是通過控制程序來實現的。我們在書寫程式一般有下面4個階段。一 構思階段 分...

js物件函式的一點理解

前端vue recentjoblist style width 100 column prop name label name width 280 column column prop startdate label startdate width 500 column column prop en...

關於scanf 函式的一點理解

習慣了c 的cin.cout之後,也不怎麼關注空格,反正cin.cout會自動處理。有一次實驗,建立huffman樹,要求輸入空格字元,當時就懵逼了.cin咋輸入空格呢?沒辦法,只能重新用scanf函式了,結果各種悲劇,足足debug乙個多小時,這難道就是越學越差勁系列?scanf 和printf ...