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