Can The ^Meta Protocol Solve Unsetness?!?!

Just had a flash :cloud_with_lightning: of inspiration, by thinking about a potential difference between these two things:

x: '~unset~
y: ~unset~

The first is legal and puts a BAD-WORD! into the variable x.

Right now, the second is an error...because the evaluator doesn't like executing BAD-WORD!s.

But what if the second did not put a typical BAD-WORD! into y, but put it into a distinctly "unset" state? And what if many contexts couldn't tell the difference...but ^-based detection could tell the difference?

>> ^x
== '~unset~

>> ^y
== ~unset~

It's very much parallel to how ~void~ is shaping up as having a kind of dual nature. Some functions are invisible, and some modes of calling those invisible functions give ~void~ when it needs a reified result. Other functions are not invisible, but return ~void~ as a way of saying that they don't have a meaningful result. When you flip into modes where you care which it is...you shift into a quoted domain, where the unquoted ~void~ is a special non-valued signal. Void isotopes, basically.

I'll have to turn this over in my head a few times, but on the surface of it... this feels like the solution we've been waiting for. Unset isotopes.

Stay tuned.

2 Likes