[racket] DrRacket needs work

From: Shriram Krishnamurthi (sk at cs.brown.edu)
Date: Mon Nov 14 07:41:59 EST 2011

> i do it in emacs usually if we are talking about being able to
> evaluate chunks.

But Emacs is not an IDE.  You began by complaining that DrRacket is
not more like other traditional IDEs, and making platform-specific
complaints.  Is there ANY sense in which Emacs is more
platform-specific than DrRacket?  (I use Emacs all the time,
everywhere; I'm typing this in Emacs on Windows 7.  But virtually
nothing about Emacs's look is "native".)

In short, you're expecting that DrRacket's functionality is going to
include a traditional IDE AND Emacs?  Is that a reasonable demand?

And even if it is reasonable, is it a *consistent* one?  Emacs lets
you perform all sorts of evaluation tricks but without any promise of
program integrity.  IDEs, in contrast, have the ability to track the
connection between program and evaluation, and hence try to provide
some kind of coherence about what you're seeing in the output.
DrRacket is in the latter category.

Here is a useful little puzzle.  I strongly urge you to do this before
you go forward in this thread.  It involves writing only a very small
program, and it is an enlightening experience.

Let's call this program v.1 (for version 1).  Evaluate it.  Now change
one of the definitions.  Let's call the resulting program v.2.  But
re-evaluate just that changed definition, not the whole program.  Now
evaluate an expression E that makes sense in both v.1 and v.2 (ie,
refers to the same variables, etc).  However, E must have the property
that the answer it produces now is different from the answer it would
have produced if run against v.1 AND different from the answer it
would have produced if run against v.2.  That is, the answer that you
DO get cannot have originated from either version of the program.

At that point you will fully understand Bloch's post and why DrRacket
does not do what you seem to want it to do and why DrRacket's position
is an eminently sensible one.


Posted on the users mailing list.