我正在学习常见的lisp,并尝试实现交换值函数来交换两个变量的值.为什么以下不起作用?
(defun swap-value (a b)
(setf tmp 0)
(progn
((setf tmp a)
(setf a b)
(setf b tmp))))
Run Code Online (Sandbox Code Playgroud)
错误信息:
in: LAMBDA NIL
; ((SETF TMP A) (SETF A B) (SETF B TMP))
;
; caught ERROR:
; illegal function call
; (SB-INT:NAMED-LAMBDA SWAP-VALUE
; (A B)
Run Code Online (Sandbox Code Playgroud)