[plt-scheme] Structure constructor

From: Robby Findler (robby at cs.uchicago.edu)
Date: Mon Jul 17 14:30:23 EDT 2006

At Mon, 17 Jul 2006 20:26:58 +0200, Jens Axel Søgaard wrote:
> Robby Findler wrote:
> 
> >At Mon, 17 Jul 2006 14:16:00 -0400, Sam TH wrote:
> >  
> >
> >>On Mon, 2006-07-17 at 20:03 +0200, Jens Axel Søgaard wrote:
> >>    
> >>
> >>>Hi all,
> >>>
> >>>What is the simplest way to go from a structure to its constructor?
> >>>The following seems to work, but I have a hunch there is a simpler
> >>>solution.
> >>>      
> >>>
> >>I think you want `struct-type-make-constructor'.  Then your function can
> >>be defined as:
> >>
> >>(define (struct-constructor s)
> >>  (define-values (sty _) (struct-info s))
> >>  (struct-type-make-constructor sty))
> >>    
> >>
> >
> >You can also get that information at elaboration time, if you have the
> >"s" in (define-struct s (a b)) around. define-struct's docs should
> >explain how to extract it, I believe.
> >  
> >
> Yes, in this case I need it at evaluation time though. I am writing a 
> general clone
> function for syntax trees represented by structures.

Well, it sounds like the above might suit you best, but you could write
a macro that accepts the struct names and generates code for particular
cases in your traversal.

You might also want to look at copy-struct.

Robby


Posted on the users mailing list.