<!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 managed to prepare a language for dotted struct-field-references 
and assignments that do what I want&nbsp;them to do. See attachments. For 
example:</DIV>
<DIV>(module example records</DIV>
<DIV>&nbsp;(define-values (make-person person?)</DIV>
<DIV>&nbsp;&nbsp;(make-record-type 'person #f '(name maried-with 
children)))<BR>&nbsp;(define jacob (make-person 'jacob #f ()))<BR>&nbsp;(define 
maria (make-person 'maria #f ()))<BR>&nbsp;(define (mary man 
woman)<BR>&nbsp;&nbsp;(set! man.maried-with woman)<BR>&nbsp;&nbsp;(set! 
woman.maried-with man))<BR>&nbsp;(define (birth mother father 
name)<BR>&nbsp;&nbsp;(let ((child (make-person name #f ())))<BR>&nbsp;&nbsp; 
(set! mother.children (cons child mother.children))<BR>&nbsp;&nbsp; (set! 
father.children (cons child father.children))))<BR>&nbsp;(define 
(names-of-children person)</DIV>
<DIV>&nbsp;&nbsp;(map (lambda (person) person.name) 
person.children))<BR>&nbsp;(mary jacob maria)<BR>&nbsp;(birth maria jacob 
'son)<BR>&nbsp;(birth maria jacob 'doughter)<BR>&nbsp;(printf "~s~n" 
(names-of-children maria)))</DIV>
<DIV>(require example)&nbsp;;prints&nbsp;(doughter son)</DIV>
<DIV>&nbsp;</DIV>
<DIV>BUT this has a&nbsp;high price: field-names must be looked up during 
run-time such as to relate&nbsp;them to&nbsp;those of the structure actually 
present in the variable of the field-ref 
variable.field-name.field-name.field-name etc.</DIV>
<DIV>Because of this required lookup, it makes no sense to memorize accessor and 
mutator procs. In stead I made the lookup directly access an assoc-list that 
pairs field-names with their values.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I am still working on a mod that allows (lambda (person) person.name) to be 
written as .name This should not be too difficult.</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>