[Закрыть]
 
popoff.donetsk.ua
Некоторые люди cчитают, что ответ на вопрос - это то, что важно, а необходимость поиска ответа - это лишь преграда, от которой хотелось бы избавиться. Эти люди не понимают, почему поиск ответа на вопрос всегда важнее самого ответа.
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Функциональное и логическое программирование - LISP Проверка является ли голова и хвост списка атомами

LISP Проверка является ли голова и хвост списка атомами

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

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

Автор Сообщение
ProFFeSSoR
Дмитрий
Апр, 2008
Сообщений: 2
ProFFeSSoR url://forum.message:2457
LISP Проверка является ли голова и хвост списка атомами

Мы тут с другом усердно разбираем лабораторные по Лиспу, после вашей консультации.
Возникла проблема: необходимо проверить является ли голова и хвост списка атомами, казалось бы простая функция, но напрочь отказывается работать, при том что по отдельности проверяет правильно, а вместе не хочет :(
Собственно текст функции:
(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

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:2459

Хвост списка (А В) - это список, состоящий из одного элемента - (В). Список, состоящий из одного элемента - это список, а не атом.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
ProFFeSSoR
Дмитрий
Апр, 2008
Сообщений: 2
ProFFeSSoR url://forum.message:2460

То есть для проверки хвоста на атомность необходимо ввести команду atom(car(cdr L)), но в этом случае, как я понимаю при списке (A B (С D)) функция вернёт TRUE!? Существует ли какой-то вариант проверки: является ли хвост списка атомом?

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:2461

Никакой хвост никакого списка не является атомом по определению. Так как хвост списка - это всегда список.
Исключением является пустой список, который, как частный случай, является атомом.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.

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

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Personal Photo.сайт:
www.denisey.com.ua