On Sun, Mar 29, 2009 at 2:37 PM, Neil Van Dyke <neil at neilvandyke.org> wrote:
> FWIW, I suspect that DrScheme would find more converts from Emacs if there
> were power-user features like send-last-sexp-to-repl and
> send-selection-to-repl. Even if they don't work very well.
> ...
> I'm not arguing too strongly for making DrScheme more friendly to power
> users. If the Scheme consulting revenue permits, I have a plan to rewrite
> all the Emacs Scheme support from scratch, to make it much closer to
> DrScheme, while supporting more rapid/exploratory development. I'm willing
> to add some kind of automatic HTDP student detection and lockout behavior.
> :)
Would it be possible to add some of this support to DrScheme in the
form of a plug-in? Perhaps that would ease the minds of those who
don't want to encourage that style of development without punishing
those who feel punished. As a very minor data point, my significant
Scheme/Lisp programming began in DrScheme, and as I explored Lisps in
Emacs, I quite missed the ability to send sexps to a live REPL when
going back to DrScheme. It's the reverse direction from what Matthias
described, and the reverse psychological impact.
By way of justification for the feature, it is often hard to figure
out what to do with intermediate data when developing moderately
computationally intensive processing components (as in many kinds of
computer vision applications). When working with Matlab, one tends to
stash partially processed data in the workspace while working on
subsequent layers of processing. Of course, one does periodically have
to clear the workspace, or at least certain elements of it, when the
situation has become inconsistent, but, despite this admittedly
dangerous shortcoming, it is a viable workflow. When working with Lisp
and Emacs, the REPL can be a handy place to have live data hang out.
Unfortunately, I haven't found a technique that I'm totally satisfied
with in DrScheme. In particular, I'm referring to data that takes on
the order of 10 seconds to a minute or so to compute. Any longer, and
serializing to disk is probably advisable, and perhaps the correct
advice here is to always write the data to disk, as an sexp, since
reloading it is so straightforward, but I can't help but feel that
more persistent REPLs have some advantage here.
For another example, using environments such as Impromptu
<http://impromptu.moso.com.au/manual.html> to fine tune visual
displays is a truly fantastic experience.
Anthony