中列表遍歷myList是一個列表,其元素既可以是符號,也可以是具有相同類型myList的列表。例如:myList ='(a b(a d c)d())等。在方案
我想在Scheme中編寫一個函數,它只是遍歷它(最終我會用其他值替換符號)。
我寫了這個功能:
(define traversal (lambda (myList)
(if (null? myList) '()
(if (and (list? (car myList)) (not (null? (car myList))))
(list (traversal (car myList)) (traversal (cdr myList)))
; else if car is an empty list
(if (null? (car myList))
(list (traversal (cdr myList)))
; else car is a symbol
(append (list (car myList)) (traversal (cdr myList))))))))
它給出了myList中的一些配置正確的結果,但肯定它不是一個。 例如,
(display (traversal '((f) h (r t b) (x m b m y) b (c (d)))))
增加了我不需要的額外參數。
什麼是正確的方式來顯示這樣的列表?
真的謝謝多少爲這個! – Madrugada 2014-09-24 21:35:58
不客氣! – uselpa 2014-09-24 21:41:59
既然你使用'list?',那麼首選而不是'first'和'rest'而不是'car'和'cdr'? (因爲它顯然是'#!racket'代碼) – Sylwester 2014-09-24 22:33:49