Scheme 使用列表反转数字的数字

Scheme 使用列表反转数字的数字,scheme,Scheme,我想通过在Scheme中使用列表来反转数字。到目前为止,我的逻辑是将数字的模乘以10,然后将该数字附加到列表中。在每次递归调用中,该数字通过除以10来减少。到目前为止,我的代码如下: (define (reverse n L) (let ((r (remainder n 10))) (if (= n 0) L (begin ((append L (list r)) (reverse (/ n 10) L)))))

我想通过在Scheme中使用列表来反转数字。到目前为止,我的逻辑是将数字的模乘以10,然后将该数字附加到列表中。在每次递归调用中,该数字通过除以10来减少。到目前为止,我的代码如下:

(define (reverse n L)
 (let ((r (remainder n 10)))
    (if (= n 0)
        L
        (begin
          ((append L (list r))
           (reverse (/ n 10) L))))))
remainder: contract violation
  expected: integer?
  given: 123/10
  argument position: 1st
  other arguments...:
我遇到的问题是,当我输入一个值时,例如123,如下所示:

(define (reverse n L)
 (let ((r (remainder n 10)))
    (if (= n 0)
        L
        (begin
          ((append L (list r))
           (reverse (/ n 10) L))))))
remainder: contract violation
  expected: integer?
  given: 123/10
  argument position: 1st
  other arguments...:

我错过了什么?感谢Scheme中的当你除以两个整数时,得到的结果是整数或比率
123/10
是一个比率(因为不能将123除以10得到整数)

如果要将其转换为整数,则必须
floor
ceil
将其转换为整数