> My contention is that if you're not willing to go for consistent
> then simple is probably the best thing available. And "simple",
> in this case, just means no use of a macro before its definition.
>
> That means disallowing mutually-recursive macros. This is a
> "restriction that makes additional complications appear necessary",
> in the sense of the first paragraph of the report.
How does disallowing mutually-recursive macros follow from "...no use
of a macro before its definition?" It's the use, i.e. invocation, of
the macro that has to happen after its definition, not the declaration
of the transformer.
Consider the following contrived code, for example:
(define-syntax count-even
(syntax-rules ()
((_) 0)
((_ x y ...) (1+ (count-odd y ...)))))
(define-syntax count-odd
(syntax-rules ()
((_) (count-even))
((_ x) 1)
((_ x y ...) (1+ (count-even y ...)))))
(count-even 1 2 3 4) ; Only here is a macro actually used.
The macros are mutually recursive, but neither macro is actually used
before its definition.
_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss