>(double-all `(123
4))(246
8)>(incr-all `(123
4))(234
5)
(define
(double
x)(*
x2))
(define
(incr x)
(+ =1))
>(map double
'(1 2 3 4))(24
68)
eval這個過程的用法,利用它可以實現用scheme語言本身來解釋scheme表示式的功能,這對乙個學習編譯系統和scheme語法功能的實現非常重要。下面是在guile中執行eval過程來解釋scheme表示式的情況:
guile> (primitive-eval
'(+ 2 3))
5guile> (eval '(+
12) (interaction-environment))
3
這裡面包含了兩個版本的eval過程,首先是原始的guile內部使用的primitive-eval,它可以直接解釋執行scheme表示式;第二個是正常的eval過程,它需要兩個引數,乙個是要解釋執行的要scheme表示式,第二個是表示式執行的環境,可以由interaction-environment過程來獲得,如此則eval過程正常執行。
可以想象用c語言來寫c語言編譯器對初學者來說的難度,但掌握scheme語法和eval的用法後,你會發現用scheme語言來寫乙個scheme語言直譯器並不是很難,這可能成為你理解編譯原理的重要一步。
我們在感覺到scheme語言的簡單易用的同時,還應該意識到它是一門富於挑戰意義的語言,相信現在我們能夠真正理解scheme挑戰意義的所在了吧。
程式設計正規化總結
什麼是物件導向程式設計?object oriented programming oop 把物件作為基本單元,把物件抽象成類 class 包含成員和方法 資料封裝 繼承 多型 python中使用類來實現。過程式程式設計 函式 oop 類 類變數和例項變數的區別 區分類變數和例項變數 類變數由所有例項共...
程式設計正規化概述
程式設計正規化這個名詞聽起來好像比較高深,但是其實本質上是它是對於程式設計風格,或者設計思路的抽象。它並不是跟程式語言是一一繫結的關係,有些程式語言python 天生可以支援多種程式設計正規化。從程式設計根本思維上的差異上區分,目前主要分成兩種 命令式 指令式 程式設計 和宣告式程式設計 命令式程式...
程式設計正規化 程式設計的本質
程式設計正規化的種類 很多人認同的兩個觀點 程式 資料結構 演算法 這個表示式認為,如果資料結構設計得好,演算法也會變得簡單,而且乙個好的通用的演算法應該可以用在不同的資料結構上。演算法 控制 業務邏輯 這個表示式則想表達的是資料結構不複雜,複雜的是演算法,演算法由兩個邏輯組成,乙個是真正的業務邏輯...