<!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 Jens Axel,</DIV>
<DIV>Thanks, Yes I guessed the problem was located there.</DIV>
<DIV>I understand that the two transformers produce syntactically distinct 
identifiers, but I would not know how to make them identical. I have tried 
(quasi)syntax/loc, but that did not work either. Is there a solution for this 
problem? If so, can you give me some extra hint? Included is a cleaner version 
of the code.</DIV>
<DIV>Jos</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>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=jensaxel@soegaard.net href="mailto:jensaxel@soegaard.net">Jens Axel 
  Søgaard</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=samth@ccs.neu.edu 
  href="mailto:samth@ccs.neu.edu">Sam TH</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Cc:</B> <A title=jos.koot@telefonica.net 
  href="mailto:jos.koot@telefonica.net">jos koot</A> ; <A 
  title=plt-scheme@list.cs.brown.edu 
  href="mailto:plt-scheme@list.cs.brown.edu">plt-scheme@list.cs.brown.edu</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Sunday, March 11, 2007 3:08 
PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [plt-scheme] Dot-notation 
  for structure field access</DIV>
  <DIV><BR></DIV>Sam TH skrev:<BR>&gt; I haven't tested this, but you almost 
  certainly need to add<BR>&gt; <BR>&gt; (require-for-template mzscheme)<BR>&gt; 
  <BR>&gt; to the `dot' module.<BR><BR>For some reason that's not 
  enough.<BR><BR>The error stems from the line<BR><BR>&nbsp;&nbsp; 
  (id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #'((make-struct-field-accessor #,acc #,n) 0 #,var))<BR><BR>in 
  register-transformer-builder.<BR><BR>The examples starts 
  with:<BR><BR>&nbsp;&nbsp;&nbsp; (define-struct-type d c p (x y z) 
  (make-inspector))<BR><BR>which starts this transformer:<BR><BR>(define-syntax 
  (define-struct-type stx)<BR>&nbsp;&nbsp; (syntax-case stx 
  ()<BR>&nbsp;&nbsp;&nbsp; &lt;irrelevant clauses&gt;<BR>&nbsp;&nbsp;&nbsp; 
  ((define-struct-type (descr constr pred super) (field ...) 
  inspector)<BR>&nbsp;&nbsp;&nbsp;&nbsp; (let-values (((acc 
  mut)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (apply values 
  (generate-temporaries #'(acc mut)))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (register-transformer-builder #'constr #'(field ...) acc 
  mut)<BR>&nbsp;&nbsp;&nbsp; #`(define-values (descr constr pred #,acc 
  #,mut)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (let-values<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (((descr constr pred 
  #,acc #,mut)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (make-struct-type 'descr 
  super<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #,(length (syntax-&gt;list #'(field 
  ...)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  0 #f () inspector #f () #f)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (values descr constr pred #,acc #,mut)))))))<BR><BR>Then<BR><BR>&nbsp;&nbsp; 
  (define-struct-var s (c 1 2 add1))<BR><BR>defines s and the s.x, s.y and s.z 
  via:<BR><BR>&nbsp;&nbsp; (define-syntax (define-struct-var 
  stx)<BR>&nbsp;&nbsp;&nbsp;&nbsp; (syntax-case stx 
  ()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((define-struct-var var (constr 
  expr ...))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #`(begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (define var (constr expr 
  ...))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #,@((register-lookup #'constr) #'var)))))<BR><BR>The s.x is defined via the 
  procedure registered by:<BR><BR>(define-for-syntax 
  (register-transformer-builder constr fields acc 
  mut)<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
  (register-add!<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  constr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (lambda 
  (var)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (let ((n 
  0))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (map<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (lambda 
  (field)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (let ((dotted-var (make-id var 
  field)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (begin0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #`(define-syntax 
  #,dotted-var<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (make-set!-transformer<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (lambda 
  (stx)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (syntax-case stx 
  (set!)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ((set! id 
  v)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #'((make-struct-field-mutator #,mut 
  #,n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #,var 
  v))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ((id x (... 
  ...))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #'(((make-struct-field-accessor #,acc 
  #,n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #,var) x (... 
  ...)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (id<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  #'((make-struct-field-accessor #,acc #,n) 
  XXX<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  0 
  #,var))))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (set! n (add1 
  n)))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (syntax-&gt;list fields))))))<BR><BR>I have marked the offending line with 
  XXX.<BR><BR>-- <BR>Jens Axel Søgaard<BR><BR><BR><BR></BLOCKQUOTE></BODY></HTML>