[REBOL] Re: Fun with literal blocks!
From: lmecir:geocities at: 29-Oct-2000 16:06
thank you for choosing the Monsters subject. I would like to present a
somewhat surprising/questionable point of view.
1) A safe statement: the Monsters are undocumented.
2) A questionable statement: the Monsters are *undocumentable*. I know that
it is wrong, if I don't add an explanation, what that means. Let's go:
Let me define the Monsters first.
a) I call a Rebol value a Self Modifying (Rebol Code), if its evaluation
(with a help of Do e.g.) causes its change (to be precise, I should define
what is a Change, but let's leave that for a future discussion). (This
definition differs from a "usual" definition of a Self Modifying Code!)
b) I call a Rebol value a WYSIWYG (Rebol Code), if its evaluation (using Do
e.g.) doesn't cause an evaluation of a Self Modifying Rebol Code.
c) There are some Rebol values, like functions/natives If, Either, For,
While, Make, ..., for whose the latter depends on the argument(s) they
receive or on some other unknowns. Such values I call (relatively) WYSIWYG.
d) Any Rebol Value, that is not (at least relatively) WYSIWYG I call
I would call a Monster any non-WYSIWYG Rebol Value.
Now back to the questionable statement. I think, that:
i) The behaviour of Monsters is irregular and heavily
implementation-dependent (see the example Monster below, or any other
Monster I supplied in the WYSIWYG programming thread).
ii) Nobody can list all Monsters.
iii) The one thing that could describe the behaviour of all Monsters is
the interpreter source code.
In the above sense are the Monsters undocumentable, which means, that their
evalualuation shall be avoided as much as possible.