我正在通过 SICP 工作,对于其中一个练习,我需要创建列表中 3 个较大数字中的 2 个的列表。我正在尝试使用sort
函数,但是当我在函数内部使用它时,出现错误:
The object z, passed as the first argument to integer-less?, is not the correct type.
功能是:
(define (myList x y z)
(drop (sort '(x y z) <) 1))
如果我在解释器中运行第二行(用变量替换实际值),它工作正常,但是当我尝试使用该函数时它会爆炸。我是scheme / lisps的新手,所以我对列表的工作方式不太熟悉,但我猜它与此有关。我知道 lisp 使用链表,所以我想知道它是否与它到达最后一个元素有关,并且不知道在那之后该怎么做。
任何帮助,将不胜感激!
编辑:
我刚刚尝试运行:
(define x 4)
(define y 10)
(define z 2)
(drop (sort '(x y z) <) 1)
并得到同样的错误。