NONE complement to ANY and ALL

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".

It's getting a little tiresome of finding things I thought were finalized and deciding they are not.

:man_facepalming:

But I didn't come this far to not do things right.

In any case, I've taken NONE for empty SPLICE!:

>> ~[]~
== \~[]~\  ; antiform (splice!) "none"

>> spread []
== \~[]~\  ; antiform (splice!) "none"

>> none
== \~[]~\  ; antiform (splice!) "none"

Something that swayed me is that NONE sounds like it's counting things, and a SPLICE! antiform is countable...

Having it start with N and be 4-letters makes it seem perhaps uncomfortably close to NULL. But the idea that it's a countable analogue to null makes that sort of cool.

"NONE is a collection, so it exists as a thing, it is truthy."

"Oh, it's a collection? How many elements are in the collection?"

"There are none."

New Name For NONE-OF?

Rather than delete the logical NONE operation, I shifted it out of the way as NONE-OF for now:

That infix issue shows why it's not completely superfluous.

Although at one point I said that this was a potential benefit for PATH! as a function composer:

not/any [a, b, c] then [print "If NOT/ANY cascaded the functions"]

I have--however--challenged if this is the best use of slash vs. a more dialected approach. Jury is still out.

If the slash did just compose the functions, then that would kill the argument for NONE-OF.