Scheme 排序函数的包装过程因参数而失败
我正在研究SICP,对于其中一个练习,我需要创建一个列表,列出列表中3个较大数字中的2个。我试图使用Scheme 排序函数的包装过程因参数而失败,scheme,lisp,sicp,mit-scheme,Scheme,Lisp,Sicp,Mit Scheme,我正在研究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)) (定义(myList x y z) (
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))
(定义(myList x y z)
(drop(sort)(x y z)(x y z)
是一个包含三个符号的列表,x
,y
,和z
。它与(list'x'y'z)
相同
相反,您需要使用的是(列表x y z)
使用(4 10 2)
(例如)的原因是数字是“自我评估”的。这意味着(列表'4'10'2)
与(列表4 10 2)
(x y z)
是一个包含三个符号的列表,x
、y
和z
。它与(列表'x'y'z>相同
相反,您需要使用的是(列表x y z)
使用(4 10 2)
(例如)的原因是数字是“自我评估”的。这意味着(列表'4'10'2)
与(列表4 10 2)
(x y z)
是一个包含三个符号的列表,x
、y
和z
。它与(列表'x'y'z>相同
相反,您需要使用的是(列表x y z)
使用(4 10 2)
(例如)的原因是数字是“自我评估”的。这意味着(列表'4'10'2)
与(列表4 10 2)
(x y z)
是一个包含三个符号的列表,x
、y
和z
。它与(列表'x'y'z>相同
相反,您需要使用的是(列表x y z)
使用(4 10 2)
(例如)有效的原因是数字是“自我评估”的。这意味着(列表“4”10“2)
与(列表4 10 2)
相同。除了@Chris”解释之外,还有一种更简单的方法适用于任何数量的参数:
(define (myList . lst)
(drop (sort lst <) 1))
除了@Chris的解释外,这里还有一种更简单的方法,适用于任意数量的参数:
(define (myList . lst)
(drop (sort lst <) 1))
除了@Chris的解释外,这里还有一种更简单的方法,适用于任意数量的参数:
(define (myList . lst)
(drop (sort lst <) 1))
除了@Chris的解释外,这里还有一种更简单的方法,适用于任意数量的参数:
(define (myList . lst)
(drop (sort lst <) 1))
啊,非常感谢!我想我需要再做一点RTFM。啊,非常感谢!我想我需要再做一点RTFM。啊,非常感谢!我想我需要再做一点RTFM。啊,非常感谢!我想我需要再做一点RTFM。啊,非常感谢!我想我需要再做一点RTFM。