> there is a +Key prefix class for unique index for a relation. As far as I
> understand it, it only works for single attribute of object.
Yes, but this attribute doesn't have to be atomic.
> Is there a reasonably straightforward way to have an index that requires
> uniqueness of tuple/list of two or more attributes?
So you might define a relation
(rel nrs (+Key +List +Number))
and store a list of numbers there, or
(rel sts (+Key +List +String))
for a list of strings.
You might also use something like
(rel bg (+Key +Bag)
((+Date)) # Valid from
((+Number) 2) # Percent
((+Symbol)) ) # Type
for a list of different items, or simply
(rel xx (+Key +Any))
for any arbitrary Lisp data structure. This is not further checked at
runtime than, and you have to take care to build the right structure by
yourself (the +List and +Bag relations handle that for you to a certain