Прежде всего, вы используете неопределенные функции Scheme.Я собираюсь отработать следующие предположения:
пусто?is null?
rest is cdr
first is car
Ваш код работает, беря первый элемент в списке и добавляя его в другой список.Однако этот первый элемент списка может быть самим списком.Вам нужно проверить, является ли элемент, над которым вы работаете, атомарным или списочным.Если это список, то вы вызываете рекурсивно глубокий реверс.
Если вы хотите, чтобы код был добавлен к этому, оставьте комментарий.