idx ... +Idx

Sergey ShishkinSergey Shishkin
1 min read

Когда выбирал и сортировал лексемы по алфавиту, сомневался, что это может быть редукция от “индекса”, а может и от “идентификатора”, то есть вполне можно было бы объединить с индексом, тем более, что в соответствующих контекстах уже акцентировались *ObjIdx и +IdxFold.

+Idx - префиксный класс для поддержания неуникальных полнотекстовых индексов для отношений +String, подкласс +Ref. Принимает необязательные аргументы для минимально индексированной длины подстроки (по умолчанию 3) и атрибут +Hook. Часто используется в сочетании с индексом +Sn soundex или префиксными классами индекса +Fold.

(rel nm (+Sn +Idx +String))  # Name

idx - поддерживает дерево индексов в var и проверяет наличие any. Если any содержится в var, возвращается соответствующее поддерево, в противном случае NIL. В первой форме any деструктивно вставляется в дерево, если flg не равен NILany там еще не было), или удаляется из дерева, если flg равен NIL. Если все элементы вставляются в отсортированном порядке, дерево вырождается в линейный список. В таких случаях для flg можно передать 0, чтобы рандомизировать порядок вставки. Вторая форма проверяет только наличие, но не изменяет дерево индексов. В третьей форме (при вызове с одним аргументом var) содержимое дерева возвращается в виде отсортированного списка.

(idx 'var 'any 'flg) -> lst

(idx 'var 'any) -> lst

(idx 'var) -> lst

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

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

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