"Quasiforms", "Stable/Unstable Isotopes": Simpler Terminology?

It's no secret that I'm proud of the way the design for generalized isotopes is tearing through classic problems in Rebol.

At the same time, people's eyes can glaze over when you find yourself writing sentences like:

"All quasiforms become isotopic forms when evaluated, and when going the other way through a meta operation on an isotope, you'll get a quasiform back."

It all makes sense to me. But I don't want to overlook better terms, if they exist.

How Did "Isotopes" Come To Be Called That?

The term isotope originated from the "decaying" behavior, where a special form of null would run a THEN branch. But this special form would not be something you could store in a variable...it would become an ordinary null at that point. So getting stored in a variable would cause "decay".

>> null
; null

>> if true [null]
; null isotope

>> x: if true [null]
; null isotope

>> x
; null

The decay means variables captured from expressions would have a different behavior when substituted for the expressions. That was deemed to be an acceptable cost.

>> if true [print "then", null] else [print "else"]
then

>> temp: if true [print "then", null]
then

>> temp else [print "else"]
else

The parallel with decay of atomic isotopes seemed pretty clear, at least to me. Many places would see it as a normal null, but a few special sites could use a "sensor" to detect the difference. ELSE was an example of something that could detect.

As things moved forward, and when logic variables became ~true~ and ~false~ isotopes, it became clear these isotopic states would need to be able to stored in variables. That meant there were "unstable isotopes" and "stable isotopes"... e.g. WORD! isotopes were stable, ERROR! isotopes were not.

Having these stable isotopes actually strengthened the analogy. Because some atomic isotopes are stable, while others are not.

How Did "QUASI" Become Called That?

Originally, things like ~foo~ were called "bad words", designed to cause errors when accessed through a variable by default. They were like an old-school UNSET! where you could give it a custom label. But eventually everything was generalized so that everything had an isotopic form.

The fact that these forms stopped conveying an error condition meant considering them "bad" wasn't sensible. I kind of latched onto "quasi" in part because of the tilde's use in approximation, e.g. (3.0001 ~= 3).

(It also sounds a little like "queasy" and the squigglies look wavy and maybe a bit uncomfortable. :nauseated_face:)

So... Speak Now Or Hold Your Peace?

Bad naming can have an impact. I think calling complex numbers "imaginary" is a good example of a bad name that probably caused a few problems.

But I think the names here are good. It's just going to be a matter of figuring out how to teach people to not be afraid of them.