Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 树中节点的属性列表_List_Recursion_Racket_Nodes - Fatal编程技术网

List 树中节点的属性列表

List 树中节点的属性列表,list,recursion,racket,nodes,List,Recursion,Racket,Nodes,我在和DrRacket合作时遇到了一个小问题。我在C、C++、java、python等程序中编程得很广泛,但以前从未使用过函数式编程语言,所以我被绊倒了。 我有一个节点,我需要返回该节点的眼睛颜色特征列表,以及它的所有父元素和父元素的父元素等。这是我所拥有的,我不知道哪里出了问题。我怀疑这与我必须添加的所有空白有关,因为我并没有真正理解这些。太多该死的括号了,哈哈。它把每件事都做好了,但是有一堆其他的空间或东西,而不是一个列表 (define (eye-colors f) (cond [(e

我在和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)

非常感谢您提供的任何帮助

明白了!由于存在缺点,问题是嵌套列表。通过将第一个cons切换为append解决了问题,现在一切都很好。工作代码如下

(define (eye-colors f)
  (cond [(empty? f) empty]
        [ else (append (cons (child-eyes f) (eye-colors (child-mom f))) (eye-colors (child-dad f)))]))

这只是列表展平函数的一个特例,尽管它使用struct而不是conses作为输入。有许多方法可以编写展平函数,包括和。