[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] ANN: first draft of R7RS small language available

Two hours ago, Vitaly Magerya wrote:
> Eli Barzilay wrote:
> > The only place where it was a problem are the contract and the ffi
> > libraries that both provide their own `->' binding.  Of course,
> > one way to resolve that is to match `->' symbolically, but that
> > tend to break hygine in the usual way, which is why it wasn't
> > done.
> So when you need to use both libraries, do you rename one of the
> "->"? I guess it's not that big of a problem if this is the only
> conflict in your codebase (I imagined the conflicts would be more
> widespread).

Right -- they are as widespread as any other name conflicts.  [It
might have been different if macros would make heavy use of keywords
(as in the CL `loop' macro), but that's not the case.]

> >> I thought it was more of a bug than a feature; where can local
> >> shadowing of "else" or "=>" be useful?
> >
> > That's probably the case if you think about uses of these that are
> > only inside `cond'.  To put this in other words, it's a similar
> > question to: "when would shadowing of `cond' be useful?".
> The question I meant to ask is "Where can breaking of 'cond' when
> 'else' is locally shadowed be useful?"; the ability to rebind any
> identifier is useful without question.

Such things often result when several macros are composed -- like a
testing library that is implemented via `cond', and is used to verify
some other syntactic form that binds `else' for whatever reason.  I
don't have any concrete example, but I find it extremely useful to
know that I don't have to worry about such things.

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Scheme-reports mailing list