Lisp Lambda函数不同参数
我试图创建使用相同代码但具有不同内部参数的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
(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
未声明。那是个错误。您还需要正确格式化和缩进代码。附加到列表末尾是错误的。由于缺乏编写好代码的努力而被否决。这些只是测试,不是我的实际代码。这只是一个非常复杂代码的简化示例。关于缩进,是我在这里发布的。没有理由写草率的代码。编辑器做缩进,正确的代码更可读。基本上,您的方式使编写正确的代码变得更加困难。