我想找到一个列表里的最大值,我查了下文档,发现只有max函数,这个函数这样声明(max &args)
没有提供在列表的函数,于是我想到解引述~@,然后我定义了一个宏:
(defmacro findmax [l]
`(max ~@l))
单我传入的参数为vec向量时,可以正常使用,但参数为’(1 2 3 4)直接报错,
另外这个宏没办法处理当参数为(vec 1 2 3 4)这样的复合表达式
我又想到了sort函数,于是我这样定义
(defn findmax [l]
(let [sortedlist (sort l)]
(last sortedlist)))
我想问一下,除了这种用sort的做法,还有没有用宏定义或函数的做法,我能力有限,实在想不出来,也不知道怎么改进我的findmax宏