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
#[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.