[cl-walker-devel] CL-Walker changes

Attila Lendvai attila.lendvai at gmail.com
Sat Nov 14 18:01:27 UTC 2009


> While investigating the environment interaction code,
> I made a number of fixes for shadowing and specials.


thanks! pushed them to the official repo. please also pull it to avoid
conflicts, there are some small changes.

and there's something i didn't do without asking your opinion:

now that you pointed out that it's not really variables and symbol
macros, but a variable namespace (and similarly not functions and
macros but function namespace)...

i think in the light of these the API should be changed a little.
certain functions doesn't make much sense anymore, some of the
suspicious points follow:

some renames:
iterate-variables-in-lexenv  ->  iterate-variable-namespace-in-lexenv
iterate-functions-in-lexenv  -> iterate-function-namespace-in-lexenv

;; TODO delme? this may be obsolete, because its interface
;; is too naiive about scanning the complex function and/or
;; variable namespace... or merge :function and :macro? similarly
;; merge :variable and :symbol-macro?
- lookup-in-lexenv

the utility of these is questionable:
- do/find/collect-symbol-macros-in-lexenv
- do/find/collect-macros-in-lexenv
- ...

because it's about the namespace, and callers should be prepared to
encounter all possible elements of the namespace. maybe they should be
replaced by:

- do/find/collect-function-namespace-elements-in-lexenv
- do/find/collect-variable-namespace-elements-in-lexenv

i'm not planning to do any of these changes, and in fact i'm not
planning to make big changes to walker in the following days/weeks. so
feel free to make changes!

and a note: please record the changes to the tests/ directory as
standalone darcs patches, because if someone is looking for regression
or just wants to stay away from API changes, then they can still
benefit from the extended test suite.

patches in darcs have no order as long as they don't depend on each
other (dependency is based on the line diffs), or if the dependency is
explicitly given when they were recorded. similarly it's a good idea
to record changes to high-traffic files into separate patches. typical
example is missing dependency in the .asd, or shaping package.lisp.

thanks again for the changes,

-- 
 attila




More information about the cl-walker-devel mailing list