*Uni ...

Думал, стоит ли акцентировать лексемы с префиксом негации “un“. С одной стороны, он не используется самостоятельно как препозиция (предлог), но с другой, имеет развитое концептуальное пространство, при этом как в субъективной ментальности, так и в институализированных логических теориях, тем более, в информатике. Решил ограничиться попутным замечанием, без отдельного поста, все такие лексемы уже перечислялись и описывались в соответствующих “корневых“ контекстах - unless, untrace, undef, unbug … Немного специфичным здесь является until, но который позже планируется в списке классификатора функций контроля потока.
А сегодня на календаре “uni“, фактически, тоже префикс и префикс нетривиальный - юнит, уникальный, унитарный, универсальный и унификация …
*Uni - глобальная переменная, содержащая дерево idx со всеми уникальными данными, которые были собраны с помощью макроса чтения запятой (,)
. Обычно используется для локализации. Установка *Uni в T
отключает этот механизм.
: (off *Uni) # Clear
-> NIL
: ,"abc" # Collect a transient symbol
-> "abc"
: ,(1 2 3) # Collect a list
-> (1 2 3)
: *Uni
-> ("abc" NIL (1 2 3))
unify - первая форма объединяет все с текущей средой Pilog на текущем уровне и со значением NIL
и возвращает новую среду или NIL
, если не удалось. Вторая форма объединяет все переменные на заданном уровне с текущей.
(unify 'any) -> lst
(unify 'cnt) -> cnt
: (? (^ @A (unify '(@B @C))))
@A=(((NIL . @C) 0 . @C) ((NIL . @B) 0 . @B) T)
uniq - возвращает уникальный список, удаляя все повторяющиеся элементы из lst
.
: (uniq (2 4 6 1 2 3 4 5 6 1 3 5))
-> (2 4 6 1 3 5)
uniq/2 - предикат Pilog, который успешно выполняется, если второй аргумент еще не сохранен в индексной структуре первого аргумента. idx используется для внутреннего хранения значений и проверки уникальности.
: (let U NIL
(? (lst @X (a b c b c d)) (uniq U @X)) )
@X=a
@X=b
@X=c
@X=d
-> NIL
: (solve '((^ @B (box)) (lst @X (a b c b c d)) (uniq @B @X)) @X)
-> (a b c d)
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
Всегда чему-то учусь!