Le jeu. 1 août 2019 à 05:05, John Cowan <xxxxxx@ccil.org> a écrit :
I think you should require the item names to be symbols, saying "It is an error if items is not a list of symbols."

I'm not sure what happens if one of the pattern bindings of nstore-from or nstore-where is missing one or more of the database items?  Is that a wild card?  Or is it just an error?

If it is an error, then you can dispense with var objectsand switch to a system where any item names left out of a pattern binding indicate they are being queried on.  So given the item names a, b, c, d, e, f and a pattern binding containing values of a, c, f, the result binding will bind b, d, e to the values found in the database.

If you do want wildcard support, you can have a unique object nstore-wildcard, perhaps (define nstore-wildcard (string-copy "*")), and any item name bound to a wildcard can have any value; it is not returned in the result binding.


I think we discussed that off-list, sorry for not responding to the thread.

We need to use nstore-var and can not rely only on symbol to describe pattern because symbols can be tuple items.