Проверить аргумент функции, является ли он символом - Lisp

Узнай цену своей работы

Формулировка задачи:

Как можно проверить, что аргумент функции является символом? Я сначала делал просто проверку на то, что аргумент не является числом: (if (not (numberp x))) А потом обнаружил, что в функцию можно передать еще и список в качестве аргумента. Что же делать со списком? Как можно узнать, что аргумент - это список?
Похоже, я нашел решение. Нужно использовать предикат atom.
При работе с выражениями необходимо иметь возможность проверить, является ли выражение атомом или списком. Это может потребоваться, например, перед применением функции first и rest, так как эти функции определены лишь для аргументов, являющихся списками. Базовый предикат atom используется для идентификации лисповских объектов, являющихся атомами. Атом - это символ или число.

Решение задачи: «Проверить аргумент функции, является ли он символом»

textual
Листинг программы
> (listp '(a b c))
T
> (listp 'a)
NIL

Объяснение кода листинга программы

  1. Функция listp проверяет, является ли объект списком.
  2. В первом вызове функции listp передается список (a b c).
  3. Функция listp возвращает T, потому что объект является списком.
  4. Во втором вызове функции listp передается символ a.
  5. Функция listp возвращает NIL, потому что объект не является списком.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы