<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi,</FONT></DIV>
<DIV><FONT face=Arial size=2>In section 12.6.1 "Expanding Expressions
to Primitive Syntax" of the fine "PLT Mzscheme Language Manual" the possible
shapes of fully expanded expressions are shown. The display does not account for
the lifting of expressions within nested begin forms. Can I safely assume
the following?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>fully-expanded-expr is top-level-expr</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>top-level-expr is one of<BR>
general-top-level-expr<BR> (#%expression expr)<BR> (module
identifier name (#%plain-module-begin module-level-expr* ···)) <=== see
below<BR> (begin top-level-expr ···)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>module-level-expr is one of<BR>
general-top-level-expr<BR> (provide provide-spec ...)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>general-top-level-expr is one of<BR>
expr<BR> (define-values (variable ···) expr)<BR> (define-syntaxes
(identifier ···) expr)<BR> (define-values-for-syntax (variable ···)
expr)<BR> (require require-spec ···)<BR> (require-for-syntax
require-spec ···)<BR> (require-for-template require-spec ···)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>expr is one of<BR> variable<BR> (lambda
formals expr* ···1) <=== see below<BR> (case-lambda (formals expr*
···1) ···) <=== see below<BR> (if expr expr)<BR> (if expr expr
expr)<BR> (begin expr* ···1)<BR> (begin0 expr expr* ···) <=== see
below<BR> (let-values (((variable ···) expr) ···) expr* ···1) <=== see
below<BR> (letrec-values (((variable ···) expr) ···) expr* ···1) <===
see below<BR> (set! variable expr)<BR> (quote datum)<BR>
(quote-syntax datum)<BR> (with-continuation-mark expr expr expr)<BR>
(#%app expr ···1)<BR> (#%datum . datum)<BR> (#%top .
variable)<BR> (#%variable-reference variable)<BR>
(#%variable-reference (#%top . variable))<BR> <BR>top-level-expr* is any
top-level-expr except (begin any ...)<BR>module-level-expr* is any
module-level-expr except (begin any ...)<BR>expr* is any expr except (begin any
...)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>The word 'except' is not nice, but without it,
the description becomes unnecesary complicated/duplicated, I think.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Kind regards, Jos Koot</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV></BODY></HTML>