给出任何长度和数据类型的列表计算:
我一直在努力学习lisp,因为我的班级有点无用(请阅读我的其他问题= _ =;),我已经这样做了:
(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))
但是胁迫并没有帮助我制作符号整数...提前感谢您的帮助,而且,我想知道我是否格式化(我没有被教导使用“让”)
答案 0 :(得分:3)
功能#'Char>不适用于符号,因为符号不是类型字符。
在比较符号之前,您可以使用symbol-name:
(symbol-name 'a)
CL-USER> "A"
所以现在你可以使用#'string>
编写比较>的函数您可以使用的任何数据类型typecase。 小例子:
(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要好得多:)