Having pushed names around a lot... and pushed things back into an equilibrium with where they were before... I'm more confident in where things stand than I've ever been. Everything feels justified (with the one little question about ~ quasars)
So I am certain the term NONE will not be used for any antiform or non-antiform state.
I always thought NONE was the wrong part of speech for a state, and fit better as a synonym for not any.
if none [a, b, c] [
print "None of the things were true"
]
It's something I'd kind of forgotten about, but the bootstrap executable still had it--and was using it.
One issue that was always a question with NONE was its return values. It needed to return "NULL" in the case of failure to be consistent with the other members of its family (and interoperate with ELSE and THEN, etc.). But what would its state be in the case of success? If it were #[true] that would be a strange counterpart to null...
But since we now have ~okay~ and ~null~ antiforms, that question is sorted out.
Usefulness vs. NOT ANY Less Critical With NOT/ANY
One of the reasons that NONE was seen as more useful than you would think was its operation with THEN and ELSE:
none [a, b, c] then [print "None of the things were true, using THEN"]
Remember that THEN and ELSE are deferred infix... they run one function on their left. Not two. So if you were to use it with NOT ANY you'd need a group:
(not any [a, b, c]) then [print "Without the GROUP! THEN reacts to ANY [...]"]
But the current cool idea is that you can cascade functions with PATH!s.
not/any [a, b, c] then [print "NOT/ANY acts as one function for infix purposes"]
NONE still looks nicer, but this is a very cool development.
So Main Question: Are There Better Uses For NONE?
The most natural language counterpart to NONE is SOME. I don't know how it would fit in as a parse feature, though?
>> parse "aaa" [some "a"]
== "a"
>> parse "aaa" [none "b"]
???
One place I found a usage for it was in a refinement where the absence (null state) meant "use the default"... e.g. setting compression preferences:
save: function [... :compress ['none 'raw 'base64]] [...]
None works as a member of an enumeration when you're looking for the empty case. I don't think this is contentious with having it be a function meaning "none of".