Я хотел бы поменять местами цифры с помощью списка в схеме. Пока что моя логика состоит в том, чтобы получить модуль по модулю числа на 10 и добавить это число в список. В каждом рекурсивном вызове число уменьшается путем деления его на 10. До сих пор мой код был следующим:
(define (reverse n L)
(let ((r (remainder n 10)))
(if (= n 0)
L
(begin
((append L (list r))
(reverse (/ n 10) L))))))
Проблема, которую я получил, заключается в том, что при вводе значения, например 123, следующее:
remainder: contract violation
expected: integer?
given: 123/10
argument position: 1st
other arguments...:
Чего мне не хватает? Спасибо