All,
I've been trying to think of a simple way to remove all dynamically bound
variables from LoGS.
My proposal (aka the best think I've come up with so far) is to have
"Environment"s be passed in to action functions, changing the lammbda list
for an action from simply (MESSAGE) to (MESSAGE &optional ENVIRONMENT).
The user would also no longer be able to bind variables by returning
things from the match function; so the ENVIRONMENT would have to be
queried by the action function.
In this reguard, I'm also proposing that ENVIRONMENTs be changed from a
list of lists where the car represents the key (variable name) and the
cadr represents the value to a true association list (alist) so that we
could use built-in Lisp functions like assoc to access them.
This way, it is no longer mysterious where a variable's value might come
from, it should be clear. It will also clear up if a variable is meant to
be bound at compile time (whenever the ruleset is put together) or at run
time.
What do you think?