On Sat, 15 Mar 2008, Mark E. Mallett wrote:
Except that I made no suggestion that they be tied, and I even said that
I liked the fact that the test(*) doesn't depend on variables.  What I
opined was that the draft could state what the behavior would be in the
presence of the variables extension
One barrier to implementing sieve extensions is exactly that the 
intersection of two extensions may require special handling.  While this 
is true by necessity for match-types and comparators, we should fight the 
tendency to add special cases for other combinations that aren't 
completely necessary.
-- analogous to how it already
states what the behavior is in the presence of the relational extension.
Not that it require variables.
This particular special case seems unnecessary to me.  It appears to have 
been inherited or based on the similar exception for the 'envelope' test. 
IMHO, that behavior should not be propagated to 'environment'.  If you 
want to test whether an environment item returns the empty string, then 
just do exactly that!
        if environment :is "foo" ""
My opinion is that the correct model for relational's :count is that it 
tests against "the number of distinct entities that would otherwise be 
matched against".  I.e., it's the number of different strings that could 
have been matched by <<:matches "*">>.  The count will be zero iff there 
were no entities to match against.
For environment, that would mean that the count will be zero if the item 
does not exist.  The current draft's exceptional handling of empty strings 
is a wart that does not increase the expressiveness of the test and should 
be removed.
(Stepping further up the abstraction ladder: a test command defines how to 
generate a set of zero or more strings.  The comparator and match-type 
arguments then define how that set of strings is matched against the keys. 
The :count match-type says "take the decimal representation of the 
cardinality of the set of match strings, collate (order) that against each 
key using the indicated comparator and return true if they collate in the 
direction indicated by the relational-match argument."  When we define new 
test commands, we should *ONLY* be specifying how it generates a set of 
strings to match against.)
Philip Guenther