函數manageFirstList
應該遞歸地將當前的一個元素複製到全局列表x中。全局變量和列表函數
(define test1DataA '(("a" "a") ("b" "b") ("c" "c") ("d" "d") ("e" "ok")))
(define test1DataB '(("a" "aa") ("b" "bb") ("c" "cc") ("d" "dd") ("ok" "Ir OK!")))
(define x '())
(define manageFirstList
(lambda (a b)
((cond ((not (null? b))
((append x (car a))
(manageFirstList (cdr a) b)))))))
(define ff (lambda (a b) (manageFirstList a b)))
(ff test1DataA test1DataB)
但它會導致一個錯誤:
car: expects argument of type <pair>; given '()
的問題是:
- 如何更新全球價值'X'?
- 如何以正確的方式連接列表?
我可以打電話超過1個功能(或者是有一種變通方法)是這樣的:
((append x (car a)) (manageFirstList (cdr a) b))
編輯:我試圖做的是建立與每個第一值的列表test1DataA列表項和每個test1DataB列表項的第二個值,其中test1DataA列表元素的第二個值與其list元素的test1DataB第一個值相同。
感謝您的解釋。我想要做的是創建一個列表,每個test1DataA列表項的第一個值和每個test1DataB列表項的第二個值,其中test1DataA列表元素第二個值與其列表元素的第一個test1DataB值相同。這是x值應該保持的。 – Trac3
如果您只是按照需要編寫結果列表,而不是用文字解釋,那將會更加清晰。無論如何,我會給它一個鏡頭。 –
謝謝:)你的回答確實幫助我更多地瞭解了SCHEME。 – Trac3