Clinton Ebadi: > `macroexpand-1' is helpful here -- (local-eval ,f env) is wrong. > > As a matter of style, you probably want to avoid local-eval as it will > have to be removed whenever Guile ends up with a faster compiler
On the other hand, local-eval is explained in guile manual, while I couldn't find any documentation for guile's macroexpand-1, nor for scheme macroexpand-1 (there are some explanations available for the lisp language). So it's probably equally evil ;] > (one day when guile-vm is integrated into core and lexical environments > become fixed arrays or similar), and messing with existing lexical > environments is Very Bad (tm). Avoiding all uses of eval and, by > extension, local-eval is a good idea. as for eval, it will always be there (in RnRS) besides I don't imagine not messing with lexical environments :) The bad thing is that scopes aren't explicitly definable and the report doesn't say much about their properties. I don't know how about practical performance, but I'd find it best if they were implemented as (implicit) hash tables that could be bound to variables and passed as arguments. I think that they could perform equally good as fixed arrays for memoized procedures. Thanks, M.