Lisp Coerce和Set函数说明

时间:2012-01-19 19:46:36

标签: lisp set quote coerce

我尝试直接解释:

(setf example (coerce "blablabla" 'list))

并且工作正常。实际上(car example)返回#\ b

但如果我试试这个:

(defun myfun (string) ( (setf example (coerce string 'list))))

(myfun "blablabla") 

我不一样!

我该如何解决?

1 个答案:

答案 0 :(得分:2)

在defun中围绕setf取出额外的括号:

(defun myfun (string)
  (setf example (coerce string 'list)))

现在你会得到同样的结果。请注意,外括号具有含义。在Lisp中,要么引用它,要么必须是函数调用。如果第一个元素是一个列表,就像在这种情况下一样,它就不是一个函数来调用,因此就是错误。