[racket] One accessor for the same fields of different structs?
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 <yfefyf at gmail.com>
To: users <users at racket-lang.org>
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