
Michael T. Richter wrote:
1. A real GUI environment that takes into account some of the HID advances made in the past 30 years. (Emacs and Vim don't count, in other words.)
I for my life think HID refers to human input devices: keyboard, mouse, joystick, gamepad, pedal, microphone, touchscreen... When this HID statement is brought up, the first and only thing I think of is the recent Mathematica 6: It supports the gamepad for rotating 3D plots. Apart from that, absolutely no programming environment takes into account much of the HID advances in the past 30 years; they only go up to keyboard and mouse. GUI, menu, modal, modeless... those would be HCI. But that inspires some real fantasy for the next century. I want to watch a function definition as a 3D thunk, and rotate it with the gamepad. It is even better than a parse tree, because I want "let x2=x*x in x2+x2" to be displayed as: * / \ x2 x2 | | ----------- + / \ \ / x or any topological equivalence. At my selection, some nodes stick out blurbs containing their types or haddocks. No more 20th century dark age dogma of vertical serialization of horizontal serialization of characters euphemized as "plain text file", the least problem of which is the sorry kludge of operator precedences and parenthesizing. In this thread I ask, "can programming be liberated from the plain text file, now that it is liberated from the von Neumann style?" Module dependency graphs receive the same treatment. Modules in a project are shown as a 3D graph. Using the gamepad, I rotate the graph, bring a module to the forefront, and press the circle button to open it. Debugging has never been more enticing! All CAFs and thunks are displayed in 3D. (As usual, you can use the gamepad to change perspective at will.) A small virtual organism, dubbed "the bug", walks the thunks and does the graph reductions. You can of course interrupt the bug and give explorative instructions. You may want to rename this activity to "bugging". Imperative communities may boast the best debuggers, but only in Haskell you find the best buggers! (On second thought, dubbing the virtual organism "the alligator" may bug you less.)