[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: scheme-reports@x*Subject*: [Scheme-reports] equivalent rewrite of a sequence of (syntax) definitions?*From*: Daniel Villeneuve <dvilleneuve@x>*Date*: Thu, 03 Jan 2013 22:03:24 -0500

Without syntax definitions, a sequence of definitions is equivalent to a letrec* form (Section 5.3.2). With syntax definitions, since this is explicitly not covered by Section 5.3.2, the wording of Section 5.4 should be used. However, it is not said: - what happens with too mutually recursive syntactic definitions; - how to split subsequences of regular and syntactic definitions. I would propose the following rewrite: Given a sequence of definitions and syntax definitions at the start of a <body>, let r_i be the identifier bound by the i^{th} definition v_i and s_i be the identifier bound by the i^{th} syntax definition d_i. Then, the entire sequence of definitions and syntax definitions is equivalent to (letrec-syntax ((s_i d_i) ...) (letrec* ((r_i v_i) ...) <expressions>+)) Is this a plausible rewrite? I know it conflicts with the wording at the end of Section 5.4 which says > Any use of a syntax keyword before its corresponding definition is > an error. but if the above rewrite is "correct", this error condition could be dropped. -- Daniel Villeneuve _______________________________________________ Scheme-reports mailing list Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

**Follow-Ups**:**Re: [Scheme-reports] equivalent rewrite of a sequence of (syntax) definitions?***From:*Alex Shinn <alexshinn@x>

- Prev by Date:
**Re: [Scheme-reports] library syntax: "visiting" a library left undefined?** - Next by Date:
**Re: [Scheme-reports] equivalent rewrite of a sequence of (syntax) definitions?** - Previous by thread:
**Re: [Scheme-reports] discrepancies in formal library syntax: begin and include-library-declarations** - Next by thread:
**Re: [Scheme-reports] equivalent rewrite of a sequence of (syntax) definitions?** - Index(es):