1
我試圖解決以下練習:方案定製assoc命令列表實現
我要實現的功能使空,因爲它應該會返回一個調度功能調度它實現以下結構的列表中的一些方法: ((1a)(2b)(3a)(4c))
調度函數應該有2個參數。 (只有缺點,並找到使用)。
方法應該是:
- 空?應該返回#t如果列表是()否則#f
- 汽車應返回列表的第一個元素。例如(1a)
- cdr應該返回沒有第一個元素的列表。
- 缺點應該添加一個元素到列表中
- find應該返回匹配鍵值的列表。
make-empty-as應該以空列表的調度函數開始。
一個例子調用順序可能是:
(define a1 (make-empty-as))
(define a2 (a1 'cons '(b 2)))
(define a3 (a2 'cons '(d 4)))
(define a4 (a3 'cons '(c 5)))
(define a5 (a4 'cons '(a 6)))
(define a6 (a5 'cons '(c 4)))
(define a7 (a6 'cons '(b 7)))
(define a8 (a7 'cons '(a 1)))
(a8 'find 'b)
=>(7 2)
(a8 'find 'a)
=>(1 6)
(a7 'find 'a)
=>(6)
((a8 'cdr 'dummy) 'find 'a)
=>(6)
正如你所看到的,利弊應補充的元素。添加一些元素後,元素應該可以找到。
我試圖從cons的實施開始,但不幸的是我被卡住了。我將傳入的參數添加到(),但我不知道如何保存下一次調用的列表。
我目前的執行情況:
(define (make-empty-as)
(define (dispatch arg1 arg2)
(cond ((eq? arg1 'null?))
((eq? arg1 'car) '())
((eq? arg1 'cdr) '())
((eq? arg1 'cons) (cons arg2()) dispatch)
((eq? arg1 'find))
)
)
dispatch
)
如果你想嘗試一下代碼,你可以在這裏:https://repl.it/BYpC
你能幫助我嗎?
問候
謝謝。這真的幫了我很多。 – hyperion
不客氣。不要猶豫,如果有什麼不明確的地方請求解釋。 – uselpa