Я новичок в Scheme, и мне интересно, как привести в порядок возвращаемые значения из рекурсивной функции, которую я написал как назначение. Функция просто выводит BST в порядке наименьшего значения. Мой вопрос немного педантичен, но мне любопытно. Вывод функции представляет собой список чисел, но рекурсивная реализация приводит к тому, что пустой список возвращается в самом конце. т. е. 8 16 20 '(). Есть простой способ просто вернуть список чисел и оставить пустой список? Я могу представить пару способов сделать это; создавая новый список или строку и возвращая это в конце, но это добавит справедливую часть накладных расходов для такой простой задачи. Есть ли более простой способ достичь этого результата? Благодарю.Типы возврата в Racket Scheme
Примечание: назначение завершено, и на этом этапе у меня должны быть полные отметки, поэтому это не вопрос домашней работы.
#lang racket
(define (show lst)
(cond
[(null? (cadr lst))
'()]
; recur smaller tree
[(< (car lst) (caaddr lst))
(show (cadr lst))
])
; print cur node
(writeln (car lst))
(cond
[(null? (cadr lst))
'()]
; recur larger tree
[(show (caddr lst))])
)
(show '(16 (8 (2()()) (10()())) (20 (18()()) (30()()))))
Ваш второй 'cond' странный, он должен иметь предложение' else'. Работает случайно. – uselpa