Lisp Lambda函数不同参数

Lisp Lambda函数不同参数,lisp,Lisp,我试图创建使用相同代码但具有不同内部参数的lambda函数。 为了澄清,我在这里输入代码: (defun testes () (setf lol '()) (loop for i in (list 1 2 3 4 5 ) do (loop for j in (list 1 2 3 4 5) do (setf lol (append lol (list (cons i j)))))) lol ) (defun mainff () (setf lol

我试图创建使用相同代码但具有不同内部参数的lambda函数。 为了澄清,我在这里输入代码:

(defun testes ()
(setf lol '())
 (loop for i in (list 1 2 3 4 5 )
        do (loop for j in (list 1 2 3 4 5)
        do (setf lol (append lol (list (cons i j))))))  


lol

)

(defun mainff ()
 (setf lol (testes))
 (setf res ())
 (print lol)
 (loop for i in lol
    do (setf res (append res (list #'(lambda ()
                        (print i)
                        ))))
 )
 res
)

(defun fun()
 (setf res (mainff))

 (loop for i in res
    do (funcall i)
 )
)

回到初始问题,res的附加中的i对于创建的每个lambda都必须是唯一的。但是,它只保存其假定的最后一个值(5)。有没有办法解决这个问题?

使用
为每个
i
创建不同的绑定

(loop for element in list
      ...

        (let ((i element))
           (lambda ()
             (print i)))

      ...

      )

变量在哪里声明<代码>res
lol
未声明。那是个错误。您还需要正确格式化和缩进代码。附加到列表末尾是错误的。由于缺乏编写好代码的努力而被否决。这些只是测试,不是我的实际代码。这只是一个非常复杂代码的简化示例。关于缩进,是我在这里发布的。没有理由写草率的代码。编辑器做缩进,正确的代码更可读。基本上,您的方式使编写正确的代码变得更加困难。