object
Всегда чему-то учусь!
Лексема “объект” используется в контексте “базы данных” - “объекты базы данных”, с другой стороны, база данных определяется как список символов, которые, в свою очередь, являются списком свойств, то есть по структуре, и то, и другое - “ассоциативный массив” … вот такой вот получается “общий лисп“ … “список пар“ ... В отлие от символа, объект принимает и отсылает сообщения, а также имеет методы … то есть, является специфичным символом, еще одним типом символа … типом “внешнего символа” … а вот интересно, может ли быть объект “транзитивным“?
object - определяет sym как объект со значением (или типом) any. Список свойств инициализируется всеми опционально предоставленными парами “ключ-значение”.
(object 'sym 'any ['sym2 'any2 ..]) -> obj
: (object 'Obj '(+A +B +C) 'a 1 'b 2 'c 3)
-> Obj
: (show 'Obj)
Obj (+A +B +C)
c 3
b 2
a 1
-> Obj
obj - находит или создает объект базы данных и инициализирует дополнительные свойства с помощью аргументов varN и valN. В первой форме вызывается запрос (typ sym [hook] val ..), тогда как вторая форма использует кэш для сохранения объектов без уникальных +Keys путем индексации *ObjIdx с аргументом any.
(obj (typ sym [hook] val ..) [var1 val1 ..]) -> obj
(obj typ any [var1 val1 ..]) -> obj
: (obj ((+Item) nr 2) nm "Spare Part" sup `(db 'nr '+CuSu 2) inv 100 pr 1250)
-> {B2}
*ObjIdx - содержит дерево idx объектов, созданных obj.