У меня небольшая проблема с 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. –