[racket] struct constructor pitfalls
It seems like the purpose of #:constructor-name is to get the default
contsructor out of the way, so you can customize it:
#lang racket
(struct hello (a b c)
#:constructor-name hello-rep
)
(define (hello) (hello-rep 1 2 3))
But this gives the error:
duplicate definition for identifier in: hello
Work arounds:
1. Use a guard, but this restricts the signature of the constructor.
2. Use a module to manage the names, but this is annoying.
3. Fall back on the make-hello convention instead of using the
struct's name to construct it.
This is particularly painful if you have code that already uses a
default constructor name. You may want to change the struct's
representation, but now you can't emulate the old constructor. I guess
the forward looking programmer would always use the make-xxx convention
to avoid this pitfall. Am I missing anything?
--
Anthony Carrico
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.racket-lang.org/users/archive/attachments/20130529/78a294b3/attachment.sig>