SICP第二章里的「圖形語言」在DrRacket 或者MIT Scheme上有沒有辦法實現啊?


你可以用 Drracket 代替GNU Scheme來實現SICP里的所有習題。Drracket: http://racket-lang.org/

因為在Drracket中可以根據源代碼來確定所使用的語言,所以只要在程序開頭寫清楚所需要的語言就可以,比如實現SICP習題的Scheme:

第一行的 #lang racket 就聲明了所需要的語言。

為了實現第二章中得圖形語言,我使用的是 PLT Scheme SICP Picture Language package, 只需在第二行加入這句話: ( require ( planet "sicp.ss" ( "soegaard" "sicp.plt" 2 1))) ,就可以使用。

這是一些結果:

最後有一個需要注意的是:將SICP圖形語言中得 wave 替換為 einstein, 畫出來的就都是愛因斯坦爺爺了


這個只要自己會一些繪圖語言(比如 metapost 、postscript 等等),可以很容易實現輸出這些圖形格式的文件


有啊。

題主估計想知道的是在Scheme里怎麼畫圖這裡是Scheme自帶有畫板的介面:make-graphics-device和graphics-draw-line。

使用方法如下:

; draw-line
; 這裡定義一個畫板
(define device (make-graphics-device (car (enumerate-graphics-types))))
; 這裡定義一個劃線的函數
(define (draw-line v1 v2)
(graphics-draw-line device
(xcor-vect v1)
(ycor-vect v1)
(xcor-vect v2)
(ycor-vect v2)))

1、先自己畫個小人:

參考代碼:sicpAns/2049_picture_language_painters.markdown at master · strint/sicpAns · GitHub2、對圖片進行翻轉、遞歸:

參考代碼:sicpAns/2051_picture_language_below.markdown at master · strint/sicpAns · GitHub


把分形結合上第三章講的無窮流會更好玩


Picture language 貌似是這個…mit-scheme用的


推薦閱讀:

想業餘時間學慣用cad二次開發,編程自動出圖,應該如何做?
Functional Programming 說的就是 Lambda Calculus 嗎?
clojure中 x x #x 他們之間的關係一直很暈 能給一些應用場景例子嗎?
Lisp 解釋器?
如何寫 Lisp 解釋器?

TAG:Lisp | Scheme | SICP | DrRacket |