SICP讀到第二章時對Scheme的理解

2021-07-10 10:57:35 字數 988 閱讀 2171

在scheme中,

乙個括號裡包含了乙個基本單元。

括號裡可以包含基本的資料,或者由別的括號圍起來的的基本單元。

比如 ( + 1 2 ),它有兩種意義:第一種,它代表了1+2這個運算過程,第二種,它代表了整數3.

再比如 ( define x 1 ),有兩種意義:第一種,它代表了「將x的值設定成1」這個運算過程。

第二種意義,它返回乙個東西,這個東西是值還是過程我也不知道(誤

但總之,( define 1 )代表了乙個值或者過程。

在scheme中,值和過程分的並不是那麼清楚,這是最令我驚奇和著迷的地方。

乙個過程也可以作為返回值,返回給其它的過程作為乙個引數來使用。

這句話可能有點抽象。但其實在c語言中有類似的概念,那就是函式指標。

在c語言中,函式指標指向了函式的起始位址,也就是函式的入口。這個指標是乙個十六進製制整數值,

但是這個整數又指向了乙個函式,所以它又可以被看做乙個函式。

所以c語言中,使用函式指標,可以達到scheme中的,「把過程作為引數傳進去」、「把過程作為引數傳出來」 這兩個目的。

所以這就是函式式程式設計了對嗎?

下面討論一下scheme的括號的意義

一對括號就代表了乙個值,這個值可以是常規意義上的值,也可以是過程,也可以是空的:()

括號裡的東西由兩種元素組成:資料和對資料的操作。

第一項是對資料的操作,後面的都是資料。

但是,資料和操作分的並不是那麼清楚。

所以操作也可以被操作所操作(我覺得這句話會燒掉讀者的大腦)

比如

(define * 2)

(+ * * * *)

這麼做會輸出8,因為你把乘號定義成了2,這個例子雖然有些匪夷所思,但是可以說明,scheme語言的靈活性。

就像sicp第一章所說的:

」lisp不像其它程式語言,它給了過程完全的第一級狀態。這就給有效實現提出了挑戰,但由此所獲得的描述能力卻是極其驚人的。「

第二章 對 的擴充套件

xcode的.m副檔名表示檔案含有objective c 應由objective c編譯器處理。c編譯器處理名稱以.c結尾的檔案,而c 編譯器處理.cpp檔案。在xcode中,所有這些編譯工作全由gcc處理,這個編譯器能處理 語言的全部三個變體。objective c剛誕生的時候,副檔名.m代表me...

對查詢結果排序(第二章)

2.1以指定的次序返回查詢結果 order by.asc 公升序 desc 降序 select from table order by date asc 根據時間公升序排列 2.2按多個字段排序 select column1,column2,column3 from order by column2...

MySQL第二章總結 Mysql第二章 儲存引擎

1 本章目標 儲存引擎 資料型別 重點 2 儲存引擎 在關係型資料庫中,資料儲存在表中,表由行和列組成。開發中,可能需要各種不同的表,有的表簡單,有的表複雜,有的表讀取快,有的讀取資料慢,有的表更新快等。根據對資料的不同的處理需求,使用不同的儲存引擎,可以將mysql資料庫的效能發揮到最大。查詢my...