Sometimes it's nice to say things like return blank
instead of return _
It can just look better. So there are named versions of a few symbolic things, like BLANK and TRASH.
>> blank
== _
>> trash
== ~
But there are also named versions of NIHIL and NOTHING.
>> nothing ; no console display
>> nihil
== ~[]~ ; anti
But how does that work? NIHIL can't be stored in a variable, it's an unstable isotope. And NOTHING represents an unset variable, so variables containing it would error.
So of course, these aren't variables holding the states... they're variables holding actions, and they return the state. So:
>> nada: nothing ; I'd like to alias this for spanish, please...
>> nada
** Script Error: nada is ~ antiform (see ^(...) and GET/ANY)
And you might be surprised at the result of GET:
>> get $nihil
== ~#[frame! []]~ ; anti (hey, that's not nihil!)
Does this sort of suggest that we're doing people a disservice by suggesting you can "name" these particular antiforms?
Would it be better if we just said you're supposed to use quasiforms if you want to generate these antiforms?
>> ~
>> ~[]~
== ~[]~ ; anti
It's easier to not name them now, and add the name later, vs. provide the name and take it away.
Also--not that it really matters--but it's faster. The evaluator can tweak the quoting byte to antiform on those literals faster than making a function call.