Объяснение функций Lisp Coerce и Set
Я пытаюсь сделать это непосредственно для интерпретации:
(setf example (coerce "blablabla" 'list))
и работает отлично. По факту (car example)
возвращает #\b
но если я попробую это:
(defun myfun (string) ( (setf example (coerce string 'list))))
(myfun "blablabla")
Я не понимаю то же самое!
Как я могу исправить?
1 ответ
Решение
Удалите лишние скобки вокруг setf в defun:
(defun myfun (string)
(setf example (coerce string 'list)))
Теперь вы получите то же самое. Обратите внимание, что внешние скобки имеют значение. В Лиспе он либо заключен в кавычки, либо должен быть вызовом функции. Если первый элемент, как в этом случае, является списком, он не может быть функцией для вызова, следовательно, ошибка.