So this little guy doesn't have a name:
Yes it's a "tilde", but if there's a TILDE definition I think it should be talking about the character.
>> print ["name" tilde "me"]
name ~ me
>> char? tilde
== ~true~ ; anti
We're talking about something that evaluates to the antiform of blank (the contents of an unset variable):
>> eval [~]
== ~ ; anti
QUASI-BLANK?
It's an accurate name...
>> quasi _
== ~
But if you're going to be testing for them easily in a block, you want something shorter.
Carl went on a bit of a bizarre track by deciding that #[none] was unweildy in blocks, and he liked zeros better... single characters... so he started using zeros instead of nones, and made ZERO? accept everything.
I started using a lot more zeros in my data structures, especially those that had to be loaded from a file or database, because I knew that zero loaded more efficiently than NONE (no hash was required).
For example, where I would once create REBOL-stored DB records like this:
["name" none none]
I would use:
["name" 0 0]
Because using 0 does not require a hash-and-compare operation (as does the word NONE) nor does it require binding (as does the value NONE)... nor is it the long-form literal #[none], that seems just a bit too cumbersome to my coding style.
You're getting a lot of single-character choices in Ren-C, and which one you use kind of depends on what you want.
QUASI-BLANK is as ornery as it can be while being legal to appear in a block. e.g. if you try to ask it something like EMPTY? you'll get an error:
>> block: ["name" ~ ~]
>> empty? second block
** Script Error: empty? expects [blank! any-series? object! port! bitset! map!]
for its series argument
If you use BLANK! you have not just a different look, but more routines that are willing to think of it as being some kind of emptiness:
>> block: ["name" _ _]
>> empty? second block
== ~true~ ; anti
There's also #, which is effectively the zero character.
>> block: ["name" # #]
>> append #{DECAFBAD} second block
== #{DECAFBAD00}
>> append "Hello" second block
** Script Error: #{00} bytes illegal in ANY-STRING?, use BINARY!
Does It Need A Name?
Something that makes it desirable for QUASI-BLANK to have a name is that because it's evaluative, you can't just compare to it directly without quoting it.
if '~ = second block [...]
BLANK! and the NUL character don't have that problem.
if _ = second block [...]
if # = second block [...]
But still, Rebol tries to reduce the symboly-ness, and that looks nicer if there's a test you're going to be performing a lot:
if blank? second block [...]
So I think that QUASI-BLANK needs a nice short name, to help avoid people writing sequences like '~ =
often in their code.