There has been a "no keywords" mantra to the Rebol language, which has driven the decision that true and false should not be anything other than WORD!.
Instead, literals expressed historically as #[true]
and #[false]
were defined, and then these definitions provided:
true: on: yes: #[true]
false: off: no: #[false]
The unpalatability of the literal forms is reflected in R3-Alpha (and today's Red) choice to render the literals as if they were the words. Hence:
>> type? first [true]
== word!
>> type? true
== logic!
>> true
== true ;-- very deceptive...!
>> on
== true ;-- also deceptive, and lossy to boot!
>> form true
== "true" ;-- well, whatever FORM is, it's lossy for strings, so...
>> mold yes
== "true" ;-- okay that strikes me as bad.
>> mold/all yes
== "#[true]" ;-- in R3-Alpha, not Red which is "true"
Without delving into the "what is MOLD vs MOLD/ALL" or "what is FORMing, anyway" discussion, I'll just say this feels like another one of those design errors that needs a better solution.
In trying to square this circle, I've had a nagging feeling in my mind that LOGIC! as a primitive type in Rebol may be just a bad idea in general. BLANK! is already "logically false", with everything else true (and void being opt-out or error). Rebol is a messaging language, so what if in my message for calendar appointments I have a ternary set of words like "yes / no / maybe"...if I want to capture that then why is my problem so different if it's just "yes / no" or "true / false"?
Don't confuse me saying I have this lingering feeling with saying I have a solution. But I thought maybe a thread to brainstorm about it--observations about it made over time, might be useful.