On Sep 14, Joe Marshall wrote:
> On Mon, Sep 14, 2009 at 5:50 PM, Eli Barzilay <[email protected]> wrote:
> >
> > As you say below, it isn't a *barrier*,
> >
> >> The abstraction `barrier' in the CL package system is more of
> >> an abstraction `speed bump', but it isn't absent altogether.
> >
> > but a speed bump -- one that everybody flies over. (At least I've
> > never seen a code walker or a reader that prohibited these things, but
> > I did see code that does use `::'s.)
>
> It's as much of a barrier as this:
> (define (make-person name ssn) (cons name ssn))
> (define person-name car)
> (define person-ssn cdr)
And that's really bad too.
> One place I worked it was policy that any use of '::' was *highly*
> discouraged and only allowed under exceptional circumstances. We
> enforced it via code reviews. We also had emacs font-lock detect it
> and display it in bright red.
>
> As for defining your own language, depending on how much effort you
> want to put in, you can do some radical surgery to the package
> system and make things like CL:IF be pretty much impossible to get
> at. I did this at ChangeSafe in order to replace the standard
> definition of COND to be one that required an `else' clause.
I don't know what's the point here -- PLT makes the first easy to do
via the language instead of relying on Emacs kluges and code reviews,
and it makes the effort involved in the second low enough to write
such a language in about 2 minutes. That you can sort of do sort of
similar stuff in a sort of half-baked way in CL is going down the
TM-argument path.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss