Мы тут с другом усердно разбираем лабораторные по Лиспу, после вашей консультации.
Возникла проблема: необходимо проверить является ли голова и хвост списка атомами, казалось бы простая функция, но напрочь отказывается работать, при том что по отдельности проверяет правильно, а вместе не хочет :(
Собственно текст функции:
(defun proverka (L)
(if (and
(atom (car L))
(atom (cdr L))
)
T
nil
)
)
(proverka '(A B (C D)))
(proverka '(A B))
(proverka '((A B) C D))
(proverka '())
Результат выполнения:
$ PROVERKA
$ NIL
$ NIL
$ NIL
$ T
Хотя во втором вызове функции она должна возвращать True, но почему-то возвращает false