QUOTE_BYTE Values (Antiform, Normal, Quasi, Quoted)

Sanity check. Antiforms are weird, and creating them (or tolerating them) when you didn't mean to is good to avoid.

Unstable antiforms are particularly weird...for instance antiform BLOCK! cannot be stored in variables. In normal assignments it decays to its first element, while multi-assignments and other particular constructs interpret it as multiple values:

>> quasiform: '~[1 2]~
== ~[1 2]~

>> x: unmeta quasiform
== 1

>> [x y]: unmeta quasiform
== 1

>> y
== 2

This is how multi-return functions are implemented.

What's nice about UNQUOTE vs UNMETA is that if you are really not suspecting you're dealing with a quasiform that should become an antiform, you can avoid the potential confusion caused.

And QUOTE has a similar convenience of not tolerating an antiform when you didn't think there'd be one.

A narrower operator of QUASI and UNQUASI exists to make it clear when you're only adding or removing a quasi state. So you can QUASI only plain non-quoted things, and UNQUASI only non-quoted quasiforms. Then NOQUASI will pass through all values except drop the quasi from quasiforms.

Just helps readers get their bearings on what's going on if that's all that's happening.

1 Like