Ever since making the umac macro, i have been doubting whether scope or *let macros are better.(I express the doubt in my second post in link, lets not talk about the crazy(and silly) syntax here yet, I might start a thread dedicated to it.) The first one is more 'lispy', but i don't see any disadvantages to having scope, however, i do see advantages:
Macros such as iterate and loop have some qualities of scopes.(Can you do flets macrolets with them?) Basically, with the *let's the variables/function/macros are contained inside the macro, while with scopes, they 'flow out' into the nearest scope. It is pretty close to equivalent, you only have to remember which macros are scope and which 'spills' their scope. It is best if at the base, there is only one macro that 'spills' scope, named something like transparent-progn.
- Causes less hooks.
- 'Scope-transparent' macros can make variables for you.
- People from other languages are more used to it.(Circumstancial, this one.)
Macros such as iterate and loop have some qualities of scopes.(Can you do flets macrolets with them?) Basically, with the *let's the variables/function/macros are contained inside the macro, while with scopes, they 'flow out' into the nearest scope. It is pretty close to equivalent, you only have to remember which macros are scope and which 'spills' their scope. It is best if at the base, there is only one macro that 'spills' scope, named something like transparent-progn.