Объяснение функций 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)))

Теперь вы получите то же самое. Обратите внимание, что внешние скобки имеют значение. В Лиспе он либо заключен в кавычки, либо должен быть вызовом функции. Если первый элемент, как в этом случае, является списком, он не может быть функцией для вызова, следовательно, ошибка.

Другие вопросы по тегам