fold ...

+Fold - префиксный класс для поддержания свернутых индексов для отношений +String. Обычно используется в сочетании с префиксными классами +Ref или +Idx.
+IdxFold - префиксный класс для поддержания неуникальных индексов для последующих подстрок свернутых отдельных слов отношений +String. Принимает необязательные аргументы для минимально индексированной длины подстроки (по умолчанию 3) и атрибут +Hook.
fold - свертывание в каноническую форму: если any
не является символом, он возвращается как есть. В противном случае возвращается новый транзитный (переходный) символ со всеми цифрами и всеми буквами any
, преобразованными в нижний регистр. Если аргумент cnt
указан и не равен нулю, результат усекается до этой длины.
(fold 'any ['cnt]) -> sym
: (fold " 1A 2-b/3")
-> "1a2b3"
: (fold " 1A 2-B/3" 3)
-> "1a2"
fold/3 - предикат Pilog, который выполняется успешно, если первый аргумент после свертки в каноническую форму является префиксом свернутых строковых представлений результата применения алгоритма get к следующим аргументам. Обычно используется в качестве предиката фильтра в запросах к базе данных select/3.
И опять пример без “рефинемента“! И нигде в документации хоть что-нибудь о каноничнскиой форме.
: (?
@Nr (1 . 5)
@Nm "main"
(select (@Item)
((nr +Item @Nr) (nm +Item @Nm))
(range @Nr @Item nr)
(fold @Nm @Item nm) ) )
@Nr=(1 . 5) @Nm="main" @Item={B1}
-> NIL
https://picolisp.tiddlyhost.com/#fold
P.S. Лексема POSIX!
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
Всегда чему-то учусь!