我正在努力学习lisp并搜索了这个问题并找到了我无法理解的回复。有人可以帮助我解决我的问题。
所以我创建了一个基本函数RotateL,它应该以列表作为参数,并返回一个新的列表,其中前一个元素成为最后一个。
所以我创造了
(defun rotate (L)
(Append ( rest L) (first L)))
ROTATE
我无法将L设置为(a b c)我尝试SETQ L '( a b c)
,最后我做(rotate L)
它也会给我一个错误。
我认为这是因为我试图将一个列表而不是一个元素放在值L中。
有人可以解释并帮助。
答案 0 :(得分:0)
因为你迷路了:
? (defun rotate (L) (append (rest L) (first L)))
ROTATE
? (rotate '(a b c))
(B C . A)
? (setq X '(x y z))
(X Y Z)
? (rotate X)
(Y Z . X)
但是你看到你的功能坏了,通过添加list
来纠正:
? (defun rotate (L) (append (rest L) (list (first L))))
ROTATE
? (rotate '(a b c))
(B C A)
? (rotate X)
(Y Z X)
您可能需要查找正式和实际参数的含义。