<!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.6000.16414" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV>Hi,</DIV>
<DIV>Finally I succeeded in producing something that seems to work both at top 
level and as internal definition and both for varrefs and assignments. See 
attachment. The new version does not use any kind of assoc-list or hash-table 
and hence does not depend on expansion time comparison of identifiers.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Now module dot exports:</DIV>
<DIV>define-struct-type</DIV>
<DIV>let-struct-type</DIV>
<DIV>let-struct-var</DIV>
<DIV>&nbsp;</DIV>
<DIV>Syntax define-struct-var has been dropped. In stead, syntax 
define-struct-type defines a syntax for definition of instances:</DIV>
<DIV>&nbsp;</DIV>
<DIV>(define-struct-type (def name constr pred) (x y z) (make-inspector))</DIV>
<DIV>(def var (1 2 add1)) ; defines an instance of struct type 'name'</DIV>
<DIV>var ;--&gt; #(struct:name 1 2 #&lt;primitive:add1&gt;)</DIV>
<DIV>var.x ;--&gt; 1</DIV>
<DIV>(set! var.y 20)</DIV>
<DIV>var.y ;--&gt; 20</DIV>
<DIV>(var.z 30) ;--&gt; 31</DIV>
<DIV>&nbsp;</DIV>
<DIV>Suggestions for improvement are welcome, of course.</DIV>
<DIV>&nbsp;</DIV>
<DIV>(((((lambda(x)((((((((x x)x)x)x)x)x)x)x))<BR>&nbsp;&nbsp;&nbsp; 
(lambda(x)(lambda(y)(x(x y)))))<BR>&nbsp;&nbsp; (lambda(x)(x)x))<BR>&nbsp; 
(lambda()(printf "Greetings, Jos~n")))</DIV></BODY></HTML>