Проверить аргумент функции, является ли он символом - 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, потому что объект не является списком.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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