пустой список без пустого слова в схеме - PullRequest
1 голос
/ 27 мая 2011

Я пишу рекурсивную функцию, возвращающую пустой список в базовом случае.Однако вывод функций показывает «пустое» слово в моем списке, которое мне не нужно.

(список (список 'abc) (список' def) пусто (список 'ghi))

Как это предотвратить?Спасибо.

Ответы [ 3 ]

3 голосов
/ 28 мая 2011

Возможно, проблема в том, что в Racket есть несколько стилей печати для значений.Попробуйте изменить его (в диалоговом окне выбора языка) на «написать» или как он там называется, что должно привести к выводу ((abc) (def) () (ghi)).

2 голосов
/ 28 мая 2011

empty, который вы видите в результате, не является «словом» - обратите внимание, что оно не заключено в кавычки. Если вы делаете ожидаете пустой список в результате, то похоже, что вы его получили. Вы даже можете проверить это:

> (empty? (third (list (list 'abc) (list 'def) empty (list 'ghi))))
#t
1 голос
/ 27 мая 2011

Не зная подробностей, мое лучшее предположение было бы что-то вроде

(let ((result (recursive-call ...)))
(if (null? result) (resursive-call (cdr whatever-list))
(cons result (cdr whatever-list)))

По сути, просто проверьте, является ли результат пустым списком, и если да, не помещайте его в список, который вы возвращаете.

...