I changed rdl.lisp so that the implementation of handle-fn is a bit
(* I'm going to use the words rule and ruleset; most of the time, since
this is the RDL code, I actually mean rule-macro and ruleset-macro *)
Instead of being a macro that ends up GETting the keyword name from the
'handle-fn symbol's plist, it now is a generic function, taking 2
arguments, the keyword and the type of object.
My idea here is that we should be able to define different keywords for
different types of objects. For example, it makes sense for a ruleset to
contain other rules, but not for a rule to contain other rules, so the
(imaginary) 'containing keyword should be used for rulesets and signal an
error for, say, the rule class.
I believe that I'm leveraging the power of CLOS to do the right thing
here. If you pass HANDLE-FN a keyword and an instance of a rule, it
should give you the handle-function for that keyword (assuming it is
defined). If that keyword isn't defined for the ruleset class, CLOS will
just cause the rule class's method to be invoked (we get class