正确使用destructuring-bind

时间:2010-11-28 13:10:55

标签: lisp common-lisp

我正在尝试使用destructuring-bind进行如下操作:

(destructuring-bind
           (a  b) '(1  2) (list a b)))

当我在REPL中评估这个时,我得到:

READ from #1=#<INPUT STRING-INPUT-STREAM>: an object cannot start with #\)
   [Condition of type SYSTEM::SIMPLE-READER-ERROR]

我希望结果是

(1 2)

在上面的代码中,错误对我没有任何意义。

我意识到我只是绑定了一个简单的参数列表,而不是一棵树,但我仍然希望它可以工作。关于我哪里出错的任何线索?

2 个答案:

答案 0 :(得分:10)

删除额外的)最后。工作正常。

答案 1 :(得分:3)

虽然我们在这,但通常的格式是:

(destructuring-bind (a  b)
    '(1  2)
  (list a b))

它还可以更容易地看到括号如何匹配。通常编辑也会提供帮助。在右括号后放置光标应突出显示相应的左括号。另请注意,所有具有自我尊重能力的Lisp语法编辑器都有一个命令来查找不匹配的括号。