[racket-dev] Best way to handle duplicate identifiers

From: Doug Williams (m.douglas.williams at gmail.com)
Date: Wed Jul 25 11:36:57 EDT 2012

Racket now includes nan? and infinite? in the core language, which
were already defined and provided by the science collection in PLaneT.
This isn't a problem, per se, with the code itself, but the
documentation doesn't build in the pre-release because of the
duplicate labels. In a perfect world, I'd just remove all traces of
them from the science collection and documentation, but then (some)
programs that use the science collection would fail for older
versions.

What is the best way to handle this?

Should I remove them from the science collection and change the
dependency for the new version to the latest Racket version? Can I
easily do that for a pre-release version? [For example I noticed that
the pre-release version I downloaded on the 20th was 5.2.901.1 and the
one I downloaded today was 5.2.900.1 - at least in the filenames. So
the numbers seem (to me) to have gone backwards.] Also, should I
consider the new release to not be backwards compatible? [I don't
think there would be any breakage of code using it, but there might be
some edge cases I'm not aware of.]

Should I leave them in the science collection and just change the
documentation to exclude nan? and infinite? on the requires? This is
what I had done previously when they popped up in the plot/utils
module.

Should the science collection just export the new nan? and infinite?
routines so they are still provided? [That might handle any edge cases
I'm not aware of.]

I suspect that I will be having more of these as Neil's new math
routines are released. So, I should probably figure out the best
approach that doesn't break anything.

Doug

Posted on the dev mailing list.