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

Reply via email to