问题描述
|
给定任何长度和数据类型的列表,请计算:
下层物品
较高的项目
符号
平均
反向清单(实现功能)
我一直在尝试自己学习口齿不清,因为我的课有点没用(请阅读我的其他问题= _ =;),我已经这样做了:
(defun higher(l)
(let (x)
(setf x (first (sort l #\'>)))))
然后,它当然没有订购符号...所以我尝试了这个:
(defun higher(l)
(let ((x 0))
(dolist (a l)
(setf a (coerce a \'integer))
(if (> a x)
(setf x a)))
x))
但是强制性并不能帮助我使符号变为整数……预先感谢您的帮助,而且,我想知道我的格式化是否正确(我没有被教过使用“ let” )。
解决方法
函数#\'Char>不能与符号一起使用,因为symbol不是类型字符。
在比较符号之前,可以使用符号名称:
(symbol-name \'a)
CL-USER> \"A\"
所以现在您可以使用#\'string>
要编写比较任何数据类型的函数,可以使用大小写。
小例子:
(defun compare> (x y)
(when (subtypep (type-of x) (type-of y))
(typecase (and x y)
(integer (> x y))
(character (char> x y)))))
正如Terje所说的,您不应该使用sort,reduce会更好:)