On Mon, Sep 14, 2009 at 3:37 PM, Eli Barzilay <[email protected]> wrote: > > Yes, they "work" for some *very* weak definition of "work". > Specifically about the two cases: > > 1. In this case CL just throws its hands in the air and provides > absolutely no abstraction barriers. Any function in any package is > *always* available to *any* code. (And yes, I know how CL > advocates defend this, and I know the "thieves" quote. It's still > broken.)
Just because the language doesn't have a draconian enforcement mechanism doesn't mean that it isn't an abstraction barrier. When you use the double-colon mechanism to access an unexported symbol, you are *explicitly* violating the abstraction. The symbol can be easily determined to be an internal symbol by inspection. In fact, if you wish, you could write a code walker that checks for this sort of reference and raises hell about it, or you could change how the reader deals with colons. The abstraction `barrier' in the CL package system is more of an abstraction `speed bump', but it isn't absent altogether. -- ~jrm _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
