Что значит ":end"? - Lisp

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

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

Нашла в интернете код, который переводит строку в список и не могу понять, что значат (read s nil :end) и (eq x :end).
Листинг программы
  1. (defun inList
  2. (text)
  3. (cond
  4. (
  5. (with-input-from-string (s text)
  6. (loop for x = (read s nil :end) until (eq x :end) collect x)
  7. )
  8. )
  9. (T 'emptyStr)
  10. )
  11. )
Помогите пожалуйста!

Решение задачи: «Что значит ":end"?»

textual
Листинг программы
  1. CL-USER> (inlist "foo bar")
  2. (FOO BAR)
  3. CL-USER> (inlist "foo :bar :end baz")
  4. (FOO :BAR)

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

В коде используется функция inlist, которая принимает список аргументов. Эта функция проверяет, содержит ли каждый элемент списка аргументов определенный символ, и возвращает список элементов, которые соответствуют этому символу.

  1. Первый вызов inlist принимает два аргумента: foo и bar. Функция проверяет, содержит ли каждый из этих аргументов символ :end. Поскольку ни один из аргументов не содержит этот символ, функция возвращает пустой список.
  2. Второй вызов inlist принимает три аргумента: foo, :bar и :end. Функция проверяет, содержит ли каждый из этих аргументов символ :end. В этом случае аргумент :end содержит искомый символ, поэтому функция возвращает список, содержащий только этот аргумент. Таким образом, в результате выполнения кода мы получаем список, содержащий только :end.

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


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

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

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы