as ... soc ... sert и asoq

Sergey ShishkinSergey Shishkin
2 min read

as - возвращает any2 неоцененным, когда any1 оценивается как не NIL. В противном случае возвращается NIL. (as Flg A B C) эквивалентно (and Flg '(A B C)). Используется в макросах чтения для условного исключения подвыражений. Своего рода quote.

(as 'any1 . any2) -> any2 | NIL

https://picolisp.tiddlyhost.com/#as

Поскольку в этом контексте определенный лексический анализ, то ещё символы, использующие “as” как префикс.

assoc - выполняет поиск в списке ассоциаций. Возвращает первый элемент из lst с any в качестве его CAR или NIL, если совпадений не найдено. \== используется для сравнения (равенство указателей).

(assoc 'any 'lst) -> lst

rassoc - обратный assoc. Возвращает первый элемент из lst с его CDR, равным any, или NIL, если совпадений не найдено.

Ну и рядом то, что сбивает с толку. По крайней мере в процессе изучения системы. Поэтому акцент уместен, хотя связь больше фонетическая, чем даже синтаксическая, а тем более, семантическая, хотя, с точки зрения функциональности, как раз, функции, которые они обозначают, связаны!. Случайно? Вероятно, аббревиатура от “ассоциации” и “квеста”. В обоих случаях выше, “asso” - скорее всего, тоже от “ассоциации”, но “о” можно интерпретировать и как “объект”.

asoq - выполняет поиск в списке ассоциаций. Возвращает первый элемент из lst с его CAR, равным any, или NIL, если совпадений не найдено.

https://picolisp.tiddlyhost.com/#assoc

И набор с лексемой “sert” (можно акцентировать отдельно, с учетом наличия функции insert - вставляет что-нибуь в список на указанную позицию) - assert , asserta , asserta/1 , assertz и assertz/1 .

0
Subscribe to my newsletter

Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Sergey Shishkin
Sergey Shishkin

Всегда чему-то учусь!