0
我遇到了一個使用DrRacket的小問題。我已經在C,C++,Java,Python等中進行了相當廣泛的編程,但從未使用過函數式編程語言,因此我被絆倒了。樹中節點的屬性列表
我有一個節點,我需要返回該節點的「眼睛顏色」功能列表,以及它的所有父元素(以及父母的父母等)。這就是我所擁有的,我無法弄清楚我要出錯的地方。我懷疑這與所有我不得不補充的「空洞」有關,因爲我沒有真正得到這些。這麼多該死的括號,哈哈。這樣做一切正常,但還有一堆其他空間或其他東西,而不是一個列表。
(define (eye-colors f)
(cond [(empty? f) empty]
[ else (cons (cons (child-eyes f) (eye-colors (child-mom f))) (eye-colors (child-mom f)))]))
我對一個特定節點的輸出是這樣的:
(list
(list
'blue
(list 'green (list 'brown))
(list 'blue))
(list 'orange))
當它應該是這樣的:
(list 'blue 'green 'brown 'blue 'orange)
任何幫助,您可以提供非常感謝!
這只是列表展平功能的特殊情況(儘管使用結構而不是作爲輸入的conses)。有許多方法可以編寫扁平函數,包括http://stackoverflow.com/a/7324493/13和http://stackoverflow.com/a/13548087/13。 – 2014-10-18 03:46:20