[plt-scheme] Structure constructor
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