Re: [Scheme-reports] ANN: first draft of R7RS small language available Eli Barzilay (29 Apr 2011 17:02 UTC)
[Scheme-reports] DELAY AND FORCE Andre van Tonder (23 Apr 2011 22:20 UTC)
[Scheme-reports] Regions of imports unspecified Andre van Tonder (23 Apr 2011 22:31 UTC)
Re: [Scheme-reports] Regions of imports unspecified John Cowan (23 Apr 2011 22:43 UTC)
Re: [Scheme-reports] Regions of imports unspecified Alex Shinn (24 Apr 2011 01:59 UTC)
[Scheme-reports] What are regions of toplevel imports? Andre van Tonder (23 Apr 2011 23:41 UTC)
[Scheme-reports] Internal syntax definition order problem Andre van Tonder (23 Apr 2011 22:39 UTC)
[Scheme-reports] Mutable exports Andre van Tonder (23 Apr 2011 22:48 UTC)
Re: [Scheme-reports] Mutable exports Alex Shinn (24 Apr 2011 02:00 UTC)
[Scheme-reports] Internal definition shadowing problems Andre van Tonder (23 Apr 2011 23:19 UTC)
[Scheme-reports] Importing identifier more than once Andre van Tonder (23 Apr 2011 23:37 UTC)

Re: [Scheme-reports] ANN: first draft of R7RS small language available Eli Barzilay 29 Apr 2011 17:01 UTC

10 minutes ago, Vitaly Magerya wrote:
> > Another related reason is the ability to avoid having a binding
> > for `else', without re-binding it just for that purpose.  (See
> > Andre's original post for several more.)
>
> Andre mentions pedagogical uses like excluding "=>" to make a
> simplified language, and renaming "else" into other (human)
> languages.  Are those actual examples of what teachers do in
> practice?

At least I do -- and I do so extensively.  (In my course I'm using a
number of languages that are all very different from Scheme.)

> BTW, how does Racket deal with such conflicts? Is this a problem in
> practice?

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.

And BTW -- that `->' thing would break even with some of the
"solutions" that were discussed here -- the contract library provides
a `->' macro, and the ffi library uses it as an infix keyword in the
syntax for function types.  (So if the keyword use would be the usual
comparison with another `->' symbol that is also unbound, it would
break if it gets bound by the contract library.)

> >> There are also historical reasons, i.e. it worked fine in R5RS
> >> where no modules existed (provided you don't shadow "else"
> >> locally).
> >
> > Right -- and that fact (the fact that `else' can be shadowed by a
> > local binding) is a fundamental motivation.
>
> 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?".  And
obviously, it's a valid question with many languages that take the
other route and forbid any such shadowing.  (Even languages in the
Lisp family -- like CL.)  I think of this freedom as absolutely
essential for a language that should accomodate making new languages
on top of.

(But to be more concrete, consider that `->' case, or some testing
framework that uses `=>' to mark expected results, etc.)

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

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports