[racket-dev] Experimenting with IDE

From: Stephen Bloch (bloch at adelphi.edu)
Date: Tue Oct 2 11:51:51 EDT 2012

An off-list discussion spurred by my previous post about IDE's for education led to the following blue-sky idea:

Suppose there were another pane or window in DrRacket that showed essentially what we see in Interactions immediately after we click "Run" -- the values of all the top-level expressions in the Definitions pane -- but was "live", in the sense that every time you made an edit in the Definitions pane, it re-evaluated that expression and all other expressions that depended on it.  (If you make an edit that makes the Definitions pane no longer syntactically legal, it re-evaluates top-level expressions as far as it can, then gives up.)  This new pane would NOT be a full-fledged editing pane -- you shouldn't be able to type into it, delete anything from it, etc. but you should be able to copy and paste from it.

This live-update window would only make sense for pure-functional programming -- I don't want things with side effects being re-evaluated every couple of keystrokes! -- but it could be a useful addition to BSL and ISL.  (Which raises another implementation question: how does a plug-in check that it's being used from BSL or ISL?  Or, alternatively, how does it check that there are no stateful constructs in the Definitions pane?)

I think a naive version of this wouldn't be difficult to implement, if I knew where to get at the hooks for editing in the Definitions pane.  And if I knew anything about writing DrRacket plug-ins :-)

Then we'd have to play with it and see whether it's actually pedagogically useful.

Stephen Bloch
sbloch at adelphi.edu

Posted on the dev mailing list.