[racket-dev] Experimenting with IDE
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