Lisp Coerce 和 Set 函数解释
我尝试直接对解释执行此操作:
(setf example (coerce "blablabla" 'list))
并且工作正常。事实上 (car example)
返回 #\b
但如果我尝试这样做:
(defun myfun (string) ( (setf example (coerce string 'list))))
(myfun "blablabla")
我不会得到相同的结果!
我该如何修复?
I try to do this directly to the interpret:
(setf example (coerce "blablabla" 'list))
and works fine. Infact (car example)
returns #\b
but if I try this:
(defun myfun (string) ( (setf example (coerce string 'list))))
(myfun "blablabla")
I don't get the same!
How can I fix?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
删除
defun
中setf
周围的额外括号:现在您将得到相同的结果。请注意,外面的括号是有意义的。在 Lisp 中,它要么被引用,要么必须是函数调用。如果第一个元素(如本例所示)是一个列表,则它不能是要调用的函数,因此会出现错误。
Remove the extra parentheses around the
setf
in thedefun
:Now you'll get the same. Note that the outer parenthesis have meaning. In Lisp, either it is quoted, or must be a function call. If the first element is, as in this case, a list, it cannot be a function to call, hence the error.