我遵循了我的书中所使用的语法" lisp的土地"并且let版本仅在传递* string *时返回nil。而#34; setq" version返回 string 的反转版本。
(defparameter *string* "a b c")
(defun reverse-string (string)
(let (reversed (string))))
(defun setq-reverse-string (string)
(setq reversed (reverse string)))
答案 0 :(得分:2)
LET
的语法是:
(LET ((var1 val1)
(var2 val2)
...)
body)
代替(varN valN)
,你可以放varN
,这是(varN nil)
的简写。您也可以省略valN
,在这种情况下,它默认为nil
。
所以你的代码相当于:
(defun reverse-string (string)
(let ((reversed nil)
(string nil))))
你错过了一定程度的括号来做你想做的事情:
(defun reverse-string (string)
(let ((reversed (string)))))
您还缺少对reverse
的调用,并返回变量
(defun reverse-string (string)
(let ((reversed (reverse string)))
reversed))