Ben, I'm not sure what problem you're actually trying to solve, but you may want to look at
0) struct super-type http://docs.racket-lang.org/reference/creatingmorestructs.html 1) generic interfaces http://docs.racket-lang.org/reference/struct-generics.html 2) racket objects http://docs.racket-lang.org/reference/mzlib_class.html -- William J. Bowman Sent from my tablet device -----Original Message----- From: Ben Duan <[email protected]> To: users <[email protected]> Sent: Mon, 25 Nov 2013 9:25 AM Subject: [racket] One accessor for the same fields of different structs? Hi All, If I have several structures, like the following: (struct customer (name age foo)) (struct student (name age bar)) I choose the same representation for the `name` and `age` fields which are `string?` and `natural-number/c`. So I think I could just define a `name` accessor for both `customer-name` and `student-name` to save some typing. I have to define the accesors by hand like: (define (name record) (cond ((customer? record) (customer-name record)) ((student? record) (student-name record)))) (define (age record) (cond ((customer? record) (customer-age record)) ((student? record) (student-age record)))) 1. It's much repetitive work. Is there any built-in way to do these things? I think macro can do these. But I'm trying to avoid macros as much as I could, because I don't trust myself in designing macros. 2. Is it good or bad style to use one accessor for different structs? Thanks, Ben ____________________ Racket Users list: http://lists.racket-lang.org/users

