<!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> </DIV>
<DIV>Now module dot exports:</DIV>
<DIV>define-struct-type</DIV>
<DIV>let-struct-type</DIV>
<DIV>let-struct-var</DIV>
<DIV> </DIV>
<DIV>Syntax define-struct-var has been dropped. In stead, syntax
define-struct-type defines a syntax for definition of instances:</DIV>
<DIV> </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 ;--> #(struct:name 1 2 #<primitive:add1>)</DIV>
<DIV>var.x ;--> 1</DIV>
<DIV>(set! var.y 20)</DIV>
<DIV>var.y ;--> 20</DIV>
<DIV>(var.z 30) ;--> 31</DIV>
<DIV> </DIV>
<DIV>Suggestions for improvement are welcome, of course.</DIV>
<DIV> </DIV>
<DIV>(((((lambda(x)((((((((x x)x)x)x)x)x)x)x))<BR>
(lambda(x)(lambda(y)(x(x y)))))<BR> (lambda(x)(x)x))<BR>
(lambda()(printf "Greetings, Jos~n")))</DIV></BODY></HTML>