我試圖做2.65在SICP,但功能放和得到是未知的。我已經嘗試過多種語言,比如相當大,球拍,r5rs,mit-scheme,mzscheme等。我甚至下載了SICP支持(http://www.neilvandyke.org/sicp-plt/),但都無濟於事。我如何獲得這些功能?我如何獲得功能放在SICP,計劃,練習2.78和
12
A
回答
17
是的,我發現SICP有時會因爲這樣的東西而有點煩人。假設存在但實際上並不存在的函數使得嘗試這些示例更加困難。我寫我自己的(得)和(放)像這樣(這是在GNU詭詐):
(define global-array '())
(define (make-entry k v) (list k v))
(define (key entry) (car entry))
(define (value entry) (cadr entry))
(define (put op type item)
(define (put-helper k array)
(cond ((null? array) (list(make-entry k item)))
((equal? (key (car array)) k) array)
(else (cons (car array) (put-helper k (cdr array))))))
(set! global-array (put-helper (list op type) global-array)))
(define (get op type)
(define (get-helper k array)
(cond ((null? array) #f)
((equal? (key (car array)) k) (value (car array)))
(else (get-helper k (cdr array)))))
(get-helper (list op type) global-array))
大概從後來在書中的觀點天真的實現,但相當簡單,工作得很好。
0
在3.3.3 Representing Tables
的Creating local tables
小節中,有一個實現。
6
有一個執行放和得到通過Eli Bendersky。 這些功能可以使用內置的Basic Hash Table Operations來實現。這是我修改後的Eli代碼版本,可以與MIT-Scheme版本9.1.1一起正常工作。
(define *op-table* (make-hash-table))
(define (put op type proc)
(hash-table/put! *op-table* (list op type) proc))
(define (get op type)
(hash-table/get *op-table* (list op type) '()))
修訂:
我發現臭蟲以時間後上述代碼。空列表由計劃解釋爲true
在有條件的條款,從而正確get
實施應如下:
(define (get op type)
(hash-table/get *op-table* (list op type) #f))
0
麻省理工學院的方案有一個內置的全局表,您可以使用。
http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/The-Association-Table.html
簡單地定義獲取和投入:
(define get 2d-get)
(define put 2d-put!)
4
如果使用球拍的編程語言,請使用這些:
(define *op-table* (make-hash))
(define (put op type proc)
(hash-set! *op-table* (list op type) proc))
(define (get op type)
(hash-ref *op-table* (list op type) '()))
相關問題
- 1. SICP練習1.10:阿克曼的功能
- 2. SICP練習1.41
- 3. SICP練習1.5
- 4. SICP練習4.54
- 5. SICP練習1.5和1.6
- 6. 之和的3 SICP練習
- 7. SICP練習中的錯誤(練習1.3)
- 8. SICP練習2.29混亂
- 9. DrRacket不從SICP練習中運行Ackermann功能1.10
- 10. 計劃編程練習
- 11. 帕斯卡計劃練習
- 12. 計劃 - 二十一點計劃(SICP)/學習編程
- 13. 縮放練習練習
- 14. SICP練習1.6的解釋是什麼?
- 15. SICP練習3.13 - 製造循環
- 16. 卡住SICP練習1.1.7使用Javascript
- 17. 使用Rails鍛鍊計劃模型與練習日程和練習
- 18. 需要在計劃中使用抽象列表功能的練習
- 19. 計劃中的映射函數練習
- 20. 我誤解了SICP練習2.65的含義嗎?
- 21. 動態規劃練習
- 22. SICP累加功能
- 23. DrRacket在進行SICP練習時應該使用哪種語言?
- 24. 如何獲得'留在計劃中
- 25. 簡單的練習功能顯示NaN
- 26. zed shaw的練習15打開功能
- 27. K&R練習擠壓功能
- 28. 斯卡拉,用遞歸功能練習
- 29. 如何在我的網頁練習中自動播放音樂?
- 30. 如何設計機器學習功能
2D-get和2D-把!在爲x鍵和y鍵參數提供列表參數時抱怨,在這種意義上,最好使用散列表實現。 – 2015-10-26 08:27:06