Что значит ":end"? - Lisp
Формулировка задачи:
Нашла в интернете код, который переводит строку в список и не могу понять, что значат (read s nil :end) и (eq x :end).
Помогите пожалуйста!
(defun inList (text) (cond ( (with-input-from-string (s text) (loop for x = (read s nil :end) until (eq x :end) collect x) ) ) (T 'emptyStr) ) )
Решение задачи: «Что значит ":end"?»
textual
Листинг программы
CL-USER> (inlist "foo bar") (FOO BAR) CL-USER> (inlist "foo :bar :end baz") (FOO :BAR)
Объяснение кода листинга программы
В коде используется функция inlist
, которая принимает список аргументов. Эта функция проверяет, содержит ли каждый элемент списка аргументов определенный символ, и возвращает список элементов, которые соответствуют этому символу.
- Первый вызов
inlist
принимает два аргумента:foo
иbar
. Функция проверяет, содержит ли каждый из этих аргументов символ:end
. Поскольку ни один из аргументов не содержит этот символ, функция возвращает пустой список. - Второй вызов
inlist
принимает три аргумента:foo
,:bar
и:end
. Функция проверяет, содержит ли каждый из этих аргументов символ:end
. В этом случае аргумент:end
содержит искомый символ, поэтому функция возвращает список, содержащий только этот аргумент. Таким образом, в результате выполнения кода мы получаем список, содержащий только:end
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д