Problems with EV



On 5/16/07, Stavros Macrakis <macrakis at alum.mit.edu> wrote:

> > Here's some more bizarreness in EV I ran across

On 5/16/07, Robert Dodier <robert.dodier at gmail.com> wrote:
>
> Entering ev(expr, ...) actually causes expr to be evaluated twice....

It appears to be that the effect of noeval ...
>

Robert, all these effects can be understood by reading the source code, and
some of them by reading the documentation, which essentially paraphrases the
source.

The point of my examples was not to say that particular results couldn't be
explained, but to rebut the notion (which I think you expressed) that ev has
been unjustly maligned.  I hope you agree by now that it is justlymaligned....

As for the possibility of writing a new ev which can be explained simply and
clearly, I am not terribly optimistic.  The basic notion of ev is "do what I
mean", which is a problematic concept.  Warren Teitelman wrote a spelling
corrector for code written in BBNLisp back in the 1960's called DWIM, and
folklore says it worked perfectly...

...for Warren...

...but not so well for others.

I don't think it would be very hard to specify a clean, well-defined EV.
But I don't think it would have that DWIM quality for anyone, probably not
even its author.

This is a lot like the problems around quoting new users keep encountering.
If you want to be able to say plot2d( %o23, ...) or plot2d( myexpr, ...) or
plot2d( diff(myexpr,x), ...) as well as plot2d( sin(x),...), you have to
learn that plot2d( sideffectfun(x), ...) is not the same as plot2d( '(
sideeffectfun(x) ), ...).  An annoying, perhaps even pedantic, distinction,
but having plot2d be clever enough to Do What You Mean is not the solution.

           -s