[Haskell-cafe] Editor

Albert Y. C. Lai trebla at vex.net
Mon May 21 15:38:10 EDT 2007


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.)


More information about the Haskell-Cafe mailing list