The draft R7RS says for equal? "Even if its arguments are circular data structures, equal? must always terminate." That sounds nice and general, except what that MEANS is that every test using "equal?" must be ten times slower and chew up memory. Same for write. And you can't depend on this in portable code, because "equal?" never meant that before.
Circular data structures are very rare; requiring such massive costs on common operations, for uncommon circumstances, is nuts. Now when you *need* termination, that is indeed useful. But then it should have a separate name, say "equal-circ?" Then we could, in our spec, specify that "equal-circ?" would be used, and implementations could separately implement "equal-circ?" without making "equal?" ridiculously inefficient. It probably won't do any good, but I'm thinking about posting this to the R7RS group (as well as an appeal to restored the c....r functions which are some of the few actually portable functions and have been with us for decades). --- David A. Wheeler ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Readable-discuss mailing list Readable-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/readable-discuss