Правильное использование destruuring-bind - PullRequest
4 голосов
/ 28 ноября 2010

Я экспериментирую с деструктурирующим связыванием следующим образом:

(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 ]

11 голосов
/ 28 ноября 2010

Удалить лишнее) на конце. Работает нормально.

4 голосов
/ 28 ноября 2010

Пока мы это делаем, обычное форматирование:

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

Это также облегчает просмотр соответствия скобок. Вообще редактор тоже поможет. Поместив курсор после закрывающей скобки, следует выделить соответствующую открывающую скобку. Также обратите внимание, что все уважающие себя редакторы с поддержкой синтаксиса Lisp имеют команду для поиска несовпадающих скобок.

...