1.3.1 formulating abstractions with higher-order procedures
讀了兩三遍才明白higher-order procedure是什麼。乙個固定的procedure形成了乙個固定的pattern,這些patterns我們可以通過用abstraction的方法來定義這個procedure,這也就是函式的思想。
但是,一般的procedure的argument,也就是變數是數值,著很多時候會限制我們abstraction的使用。文中給了一組函式,其實就是這三個函式內部都包含了乙個內在的pattern,而這個pattern中的變數是乙個procedure,或者說是函式。我們依然可以對這樣的乙個pattern來abstraction。
之所以叫higher-order procedure,其實就是對應以函式指標為引數的函式。
簡單的說,我認為普通的函式是f(x1,x2,x3,x4, xn), 抽象higher-order procedure的函式是f(g(x1,x2,...,xm), ..., xn);
乙個例子,乙個函式叫做門票**, 門票** = 基礎費用 + 任選景點門票**;這是乙個pattern,其中的任選景點門票**又可以通過不同的公式來計算,比如學生門票計算,比如老人門票計算。。。不同的公式就是不同的函式,即不同的procedure。
有乙個疑問,使用了函式指標為引數的函式跟模板是什麼關係?
在網上看了下,發現其實沒有啥關係。模板定義的是對於不同型別變數作為引數而執行的同樣的procedure
SICP讀書筆記 3 4
讓我們舉起杯,祝福那些將他們的思想鑲嵌在重重括號之間的lisp程式設計師 祝我能夠突破層層 找到住在裡計算機的神靈!1.構造過程抽象 2.構造資料抽象 3.模組化 物件和狀態 4.元語言抽象 5.暫存器機器裡的計算練習答案 在引入賦值後,迫使我們需要關心事件發生的順序,從而引發了併發的問題 限制並行...
讀書筆記(二)
使用數學函式的時候,大多數需要包含標頭檔案,但是也有特例,例如處理整型數的函式abs函式被包含在標頭檔案中 三角函式和反三角函式,都以弧度為引數,而不是以角度為引數。更加詳細的數學函式可以參考c mathematical functions。維基百科 strcpy strcat函式會改變傳入的字串的...
讀書筆記二
複審 即看 是否在 規範 的框架內正確地解決了問題。形式有 自我複審 同伴複審 團隊複審。目的是 1 找出 錯誤 2 發現邏輯錯誤 3 發現演算法錯誤 4 發現潛在的錯誤和回歸性錯誤 5 發現可能需要改進的地方 6 教育 互相教育 開發人員,傳授經驗,讓更多的成員熟悉專案各部分的 同時熟悉和應用領域...