Проблема с функцией минусов - PullRequest
0 голосов
/ 06 апреля 2011

Ну, я недавно начал изучать lisp, и, выполняя небольшую программу, я нашел небольшую проблему.Проблема в том, чтобы написать функцию, которая добавляет заголовок к имени, если у него его еще нет.Мой код:

(setf *man-names* '(carlos pablo dani sergio))
(setf *woman-names* '(eva alba luna laura))

(defun titledp (name)
    (cond ((member (car name) *man-names*) nil)
          ((member (car name) *woman-names*) nil)
          (t t)))
(defun add-title (name)
    (cond ((member (car name) *man-names*) (cons 'Mr. name))
          ((member (car name) *woman-names*) (cons 'Mrs. name))))

(defun title (name)
    (cond ((titledp (name)) name)
          (t add-title (name))))

Когда в 'add-title' вызывается cons, я получаю проблему, которая говорит, что функция 'name' не определена.Почему это происходит?как я могу это исправить?

Спасибо :))

Ответы [ 2 ]

6 голосов
/ 07 апреля 2011

Ваши круглые скобки смешные.В вашей функции title вы используете (name) пару раз.Это значит вызывать функцию с именем name без аргументов.Я думаю, что это то, что вы хотите:

(defun title (name)
    (cond ((titledp name) name)
          (t (add-title name))))
0 голосов
/ 07 апреля 2011

Поскольку вы ожидаете список для значения вашего имени, вам необходимо отправить список. Таким образом, (add-title '(carlos)) или (add-title (список' carlos)) будут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...