在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...