[plt-scheme] to define, or to let

From: Paul Schlie (schlie at comcast.net)
Date: Tue Mar 23 15:21:19 EST 2004

Ok, I must be really bored (or more likely crazy), the following represents
a few answers to questions discussed off line, which I believe reasonably
well summarize (at least my views) of the central issues on the topic:

> From: "Anton van Straaten" <anton at appsolutions.com>
> Questions:
> 1.  This language is now unambiguous in the way you've said you care about.
> Aside from possibly not seeing the need for the extra set of constructs, do
> you see any other problems with such a language?

- no (with respect to ambiguities caused my unspecified evaluation order).

> 2.  Would you simply always use the l-to-r constructs in this language, even
> in cases where you knew order was irrelevant, and avoid the other
> constructs?

- yes.

> 3.  Even if your answer to #2 is "Yes", can you see why someone might want
> to use both?

- No, I honestly can't see why someone would want both, as enabling a
  programmer to assert (I believe the following expression's parameters
  are evaluation order independent) isn't interesting; as if in fact they
  are, the expression is semantically equivalent to one evaluated in an
  unambiguous order, or otherwise the expression is itself ambiguous (to
  no one's benefit).

- being able to identify ambiguous expressions is interesting only in the
  context that the language allows such expressions; but not otherwise.

  Ergo, define scheme's expression parameter evaluation order, all scheme
  expressions are unambiguous; if all scheme expressions are unambiguous,
  there's nothing to diagnose, if the programmer didn't mean what he wrote
  then it won't behave as he meant it to, but at least it won't be due to
  anything he wrote being ambiguous.


Posted on the users mailing list.