Macros lisp条件调用函数

Macros lisp条件调用函数,macros,lisp,max,Macros,Lisp,Max,如何编写宏“MAXF”:在参数列表中查找最大值,然后调用特定函数?e、 g (defun func (x y z) (format t "~A ~A ~A~%" x y z)) (let ((a 1) (b 1)) (maxf ((+ a b 1) (func a b 1)) ((+ a b 2) (func a b 2))... ((+ a b 100) (func a b 100)) ) 结果应该是:“1100”你应该再解释一下你想做什么(以及你遇到了什么问题)。我在矩阵中回

如何编写宏“MAXF”:在参数列表中查找最大值,然后调用特定函数?e、 g

(defun func (x y z) (format t "~A ~A ~A~%" x y z))


(let ((a 1) (b 1))
  (maxf ((+ a b 1) (func a b 1))   ((+ a b 2) (func a b 2))... ((+ a b 100) 
(func a b 100)) )

结果应该是:“1100”

你应该再解释一下你想做什么(以及你遇到了什么问题)。我在矩阵中回溯一条路径,尝试确定一个最大值(在对角线、向上、向左方向),然后迈出一步。这里通过maxf,(+AB100)找到最大值,然后应打印一个B100:“1100”宏无法帮助您,因为它不知道编译时的
a
b
。宏将获得列表结构的
(+ab1)
,而不是计算值。去掉多余的括号,您可以使用
和rest
参数生成一个函数
(max(+ab 1)(dunc a b 1)…)