
I have a dream. It's not a little dream. It's a big dream. I have a
dream that someday I can find a UNIX/Linux text editor for Haskell
hacking (and possibly two or three hundred other programming languages,
although that's optional) that can give me all of the following:
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.)
2. Good quality syntax highlighting for Haskell that includes all
of the usual syntax highlighting goodies, plus:
* the ability to seamlessly handle raw Haskell and both
common forms of Literate Haskell;
* the ability to properly highlight Haddock comments;
* the ability to highlight functions and types from
libraries (user-expandable) differently from local
functions and types.
3. Line folding to hide and show blocks of code.
4. Code completion (user-expandable, ideally) for common library
functions, type declarations, etc.
5. Easy, quick access to online documentation for said functions
and declarations.
6. Good (ideally scriptable) access to external utilities for
compilation, debugging, profiling, type inference, project
management, etc.
7. A good plug-in system (ideally written in Haskell?) for
expansion.
Is there such a beast available out there somewhere? If not, is such a
beast lurking in the background ready to pounce in the near future?
--
Michael T. Richter

Michael T. Richter wrote:
I have a dream. It's not a little dream. It's a big dream. I have a dream that someday I can find a UNIX/Linux text editor for Haskell hacking (and possibly two or three hundred other programming languages, although that's optional) that can give me all of the following:
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.)
That particular part is trolling. Both emacs and vim take into account many of the HID advances made in the past 30 years. You're going to have to be more explicit about what you find unacceptable about them to get useful answers, in my opinion. I can't speak for vim, but emacs certainly satisfies 2.3, 2.4, 3, 4, 5, 6, and 7. (I'm not sure if 5 is 100% out-of-the-box but it would be very easy to sort it out if not). 2.5 I'd not really thought about before as an interesting requirement. Could be useful.
2. Good quality syntax highlighting for Haskell that includes all of the usual syntax highlighting goodies, plus:
3. the ability to seamlessly handle raw Haskell and both common forms of Literate Haskell; 4. the ability to properly highlight Haddock comments; 5. the ability to highlight functions and types from libraries (user-expandable) differently from local functions and types.
3. Line folding to hide and show blocks of code. 4. Code completion (user-expandable, ideally) for common library functions, type declarations, etc. 5. Easy, quick access to online documentation for said functions and declarations. 6. Good (ideally scriptable) access to external utilities for compilation, debugging, profiling, type inference, project management, etc. 7. A good plug-in system (ideally written in Haskell?) for expansion.
Is there such a beast available out there somewhere? If not, is such a beast lurking in the background ready to pounce in the near future? -- *Michael T. Richter*
mailto:ttmrichter@gmail.com> (*GoogleTalk:* ttmrichter@gmail.com) /I have to wonder why people think that when they can't manage local personnel within easy strangling and shooting distance, then they can manage personnel thousands of miles away that have different languages, cultures, and business rules. (Joe Celko)/ ------------------------------------------------------------------------
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Mon, 2007-21-05 at 11:47 +0100, Jules Bean wrote:
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.)
That particular part is trolling. Both emacs and vim take into account many of the HID advances made in the past 30 years. You're going to have to be more explicit about what you find unacceptable about them to get useful answers, in my opinion.
Vim is eliminated before it reaches the gate because it's a modal
editor. Even with GVim in place, it still has that modal stench to it
that leaps up and bites at awkward moments. And HID advances (the modal
issue aside)? Go to an underpowered little editor like Gedit (what I
use currently for raw Haskell, but which sadly isn't applicable to .lhs
files of either stripe) and adjust your editing preferences. It's not a
particularly good programmer's editor, but look at the lovely tabbed
dialog box with all those lovely HID bits like checkboxes, radio
buttons, spin buttons, dropdown lists, lists, etc. Now do the same in
GVim and get ... a text file with some editing tricks to make things
slightly easier. (It's not immediately obvious how to get rid of it
either.) Where is the accounting for HID advances there? (Raw Vim is
even worse.)
Hell, even comparing the out-of-the-box syntax highlighting support in
Gedit vs. (G)Vim is instructive. Code like "makeRandomValueST :: StdGen
-> (MyType, StdGen)" (which, incidentally, was far easier to copy from
in Gedit than GVim to paste into this message) only differentiates "::"
and "->" from the text and delimiters in GVim while in Gedit (keeping in
mind that Gedit isn't a very good editor!) differentiates those plus
"makeRandomValueST" vs. "StdGen" and "MyType". And the parentheses.
(G)Vim is losing to freakin' GEDIT here! The Notepad of the GNOME
world.
Emacs is its own set of nightmares. I'm not even going to start going
down the path of that particular holy war (and bucky-bit Hell). I'll
acknowledge freely that it's an incredibly powerful programming
environment. It just really doesn't play well with others at almost any
level and quite definitely doesn't have anything resembling modern HID
thought behind it. (To be fair to it, it does predate most modern HID
work by a couple of decades.)
--
Michael T. Richter

My friend read your email and remarked:
"How is this guy not embarrassed posting on the internet about not liking
vim because he doesn't like editing config files?"
On 21/05/07, Michael T. Richter
On Mon, 2007-21-05 at 11:47 +0100, Jules Bean wrote:
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.)
That particular part is trolling. Both emacs and vim take into account many of the HID advances made in the past 30 years. You're going to have to be more explicit about what you find unacceptable about them to get useful answers, in my opinion.
Vim is eliminated before it reaches the gate because it's a modal editor. Even with GVim in place, it still has that modal stench to it that leaps up and bites at awkward moments. And HID advances (the modal issue aside)? Go to an underpowered little editor like Gedit (what I use currently for raw Haskell, but which sadly isn't applicable to .lhs files of either stripe) and adjust your editing preferences. It's not a particularly good programmer's editor, but look at the lovely tabbed dialog box with all those lovely HID bits like checkboxes, radio buttons, spin buttons, dropdown lists, lists, etc. Now do the same in GVim and get ... a text file with some editing tricks to make things slightly easier. (It's not immediately obvious how to get rid of it either.) Where is the accounting for HID advances there? (Raw Vim is even worse.)
Hell, even comparing the out-of-the-box syntax highlighting support in Gedit vs. (G)Vim is instructive. Code like "makeRandomValueST :: StdGen -> (MyType, StdGen)" (which, incidentally, was far easier to copy from in Gedit than GVim to paste into this message) only differentiates "::" and "->" from the text and delimiters in GVim while in Gedit (keeping in mind that Gedit isn't a very good editor!) differentiates those *plus* "makeRandomValueST" vs. "StdGen" and "MyType". And the parentheses.
(G)Vim is losing to freakin' GEDIT here! The Notepad of the GNOME world.
Emacs is its own set of nightmares. I'm not even going to start going down the path of that particular holy war (and bucky-bit Hell). I'll acknowledge freely that it's an incredibly powerful programming environment. It just really doesn't play well with others at almost any level and quite definitely doesn't have anything resembling modern HID thought behind it. (To be fair to it, it does predate most modern HID work by a couple of decades.)
-- *Michael T. Richter*
(*GoogleTalk:* ttmrichter@gmail.com) *All really first class designers are both artists, engineers, and men of a powerful and intolerant temper, quick to resist the least modification of the plans, energetic in fighting the least infringement upon what they regard as their own sphere of action. (Nevil Shute)* _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 21 May 2007, at 13:04, Rodrigo Queiro wrote:
My friend read your email and remarked: "How is this guy not embarrassed posting on the internet about not liking vim because he doesn't like editing config files?"
Two points 1) This guy doesn't like editing config files -- that's his preference. He's stated he doesn't like either of vim or emacs, and whether you agree or not, you maybe should respect that and try to be useful and answer his question. 2) Believe it or not, a computer is a tool, it's there to get things done in the fastest and easiest way possible -- I should be able to edit my preferences in three clicks of a mouse button, rather than opening the preferences, finding the right place to edit (possibly looking up the manual to find the relevant things to insert in the config), typing a load in, and then having my preferences edited! Yes, I really do think that's an advantage, and no, I don't think snarky comments about "not liking editing config files" are either relevant or useful. Bob

On Mon, 2007-21-05 at 13:04 +0100, Rodrigo Queiro wrote:
My friend read your email and remarked: "How is this guy not embarrassed posting on the internet about not liking vim because he doesn't like editing config files?"
Because, unlike your friend, I actually have seen the advances in HID
over the past 30 years. Editing text files is not the be-all/end-all of
user interfaces. Indeed there is astonishingly high volumes of evidence
showing that it's a pretty miserable user interface -- a misery
amplified by the fact that every two-bit program has its own entirely
unique syntax (usually broken in many exciting ways!) full of cryptic
commands and settings. Don't believe it? Go to your home directory and
compare all the .<files> you find. You really think it's a good thing
to maintain each of those manually?
Oh, and of course it wasn't just the config files I showed problems
with, now, was it? I seem to remember something about modality and bad
syntax highlighting. Maybe I was tripping. It happens.
For your friend's reference, here's a good outline of what principles
underlie HID: http://www.asktog.com/basics/firstPrinciples.html. For
even more modern outlooks, I'm sure a quick search at Amazon.com (or his
bookseller of choice) can give him other ideas.
So am I embarrassed for asking for something resembling a 21st-century
user interface instead of a 1970s vintage one? Not in the slightest.
--
Michael T. Richter

Hallo,
On 5/21/07, Michael T. Richter
Oh, and of course it wasn't just the config files I showed problems with, now, was it? I seem to remember something about modality and bad syntax highlighting. Maybe I was tripping. It happens.
You may not like modality, it's entirely within your rights, but it is *not* a problem. Fortunately it's still there for the millions of us who like it. -- -alex http://www.ventonegro.org/

Hi Can everyone just relax a moment. There are different editors which suit different people. Most VIM/Emacs users wouldn't ever consider changing. Michael is asking "is there something more GUI like?" - to which the answer is yes - Visual Haskell - http://www.haskell.org/visualhaskell/ . It doesn't tick all the boxes, but it sounds to be the kind of thing you are driving for. I personally use TextPad (www.textpad.com) because it has a very nice user interface and does exactly what I expect every single time. Your text editor is merely an interface between your brain and the computer, its not surprising everyone has different preferences. Thanks Neil

On Mon, 2007-21-05 at 13:41 +0100, Neil Mitchell wrote:
Michael is asking "is there something more GUI like?" - to which the answer is yes - Visual Haskell -
Sadly what I was asking was "is there anything more GUI like for
Linux". ;) It doesn't surprise me that Macs and Windows boxes have
something like what I'm looking for. Usability testing isn't alien to
those platforms' mindsets. Unfortunately Macs are basically unavailable
where I live. (I guess I could travel 24 hours round-trip to the
nearest Apple store I know of and pay five months' spending money for a
MacBook, not to mention the ticket prices, but that's not going to
happen, I'm afraid.) And Windows as a platform lacks certain features I
like (including stability, security and an absence of "Trusted"
Computing) that made me turn away from it in the first place. It's one
of those trade-off situations, but sometimes I really wish this
particular trade-off weren't necessary.
--
Michael T. Richter

Your rant accomplishes nothing. Just note that programmers can
generally be considered more open towards harder-to-learn but
eventually more efficient to use interfaces. Yes, to a large part
they lack visibility, consistency, integration, or other such
properties; then again, once you learn to use them you're so much more
efficient than before. And you loose the incentive to improve things.
So instead of insulting people and complaining that nothing fits your
needs you have at least two options:
1. Implement it. Of course, this is a _major_ effort and many many
things are completely unsolved research issues.
2. Take what's there, learn to use it. Yes, it will lack so many
things but one way or another you'll eventually get things done.
On 5/21/07, Michael T. Richter
On Mon, 2007-21-05 at 13:04 +0100, Rodrigo Queiro wrote:
My friend read your email and remarked: "How is this guy not embarrassed posting on the internet about not liking vim because he doesn't like editing config files?"
Because, unlike your friend, I actually have seen the advances in HID over the past 30 years. Editing text files is not the be-all/end-all of user interfaces. Indeed there is astonishingly high volumes of evidence showing that it's a pretty miserable user interface -- a misery amplified by the fact that every two-bit program has its own entirely unique syntax (usually broken in many exciting ways!) full of cryptic commands and settings. Don't believe it? Go to your home directory and compare all the .<files> you find. You really think it's a good thing to maintain each of those manually?
Oh, and of course it wasn't just the config files I showed problems with, now, was it? I seem to remember something about modality and bad syntax highlighting. Maybe I was tripping. It happens.
For your friend's reference, here's a good outline of what principles underlie HID: http://www.asktog.com/basics/firstPrinciples.html. For even more modern outlooks, I'm sure a quick search at Amazon.com (or his bookseller of choice) can give him other ideas.
So am I embarrassed for asking for something resembling a 21st-century user interface instead of a 1970s vintage one? Not in the slightest.
-- Michael T. Richter
(GoogleTalk: ttmrichter@gmail.com) It's OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it. (Steve McConnell) _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- "Remember! Everytime you say 'Web 2.0' God kills a startup!" - userfriendly.org, Jul 31, 2006

On 21-mei-2007, at 13:56, Michael T. Richter wrote:
Hell, even comparing the out-of-the-box syntax highlighting support in Gedit vs. (G)Vim is instructive. Code like "makeRandomValueST :: StdGen -> (MyType, StdGen)" (which, incidentally, was far easier to copy from in Gedit than GVim to paste into this message) only differentiates "::" and "->" from the text and delimiters in GVim while in Gedit (keeping in mind that Gedit isn't a very good editor!) differentiates those plus "makeRandomValueST" vs. "StdGen" and "MyType". And the parentheses.
This is an interesting take on things. What to highlight and why is decidedly non-trivial. Personally, I strongly *dislike* highlighting of user-defined identifiers. And honestly, in Haskell, most identifiers are user-defined. Furthermore, the haskell vim highlighter actually allows you to highlight delimiters, True and False, the names of a number of types, and the names of debugging functions. It requires settings to turn that on though, as the highlighter should be as minimally visually intrusive in its default setting as possible. Or at least, that's what I think, and I was the last person to get his grubby paws on vim's highlighter for Haskell. It does highlight literate Haskell code quite nicely however, both in bird track style and in TeX style. It does expect literate Haskell to be in .lhs files though... Note that it is somewhat tricky to distinguish between the occurences of the a's before and after the semicolon in the following: map :: ( a -> b ) -> [a] -> [b]; map f (a:as) = f a : (map f as) I'd like to see what GEdit does to that. :) Doei, Arthur van Leeuwen. -- /\ / | arthurvl@cs.uu.nl | Work like you don't need the money /__\ / | A friend is someone with whom | Love like you have never been hurt / \/__ | you can dare to be yourself | Dance like there's nobody watching

Vim is eliminated before it reaches the gate because it's a modal editor. Even with GVim in place, it still has that modal stench to it that leaps up and bites at awkward moments.
that's a bit more specific, at least. but as far as i recall, modes were considered bad for specific reasons, such as 'users can't see where they are, modewise', 'functionality becomes unavailable in a mode', 'users have no way to get out of a mode', etc. and most of these specific issues have actually been addressed in vim. so, what remains is convenience: do i always want to start navigating from some home mode (meaning long, absolute, command navigation strings), or do i want the interface to remember where i navigated last (meaning short, relative, command navigation strings)? what used to be called modes (bad, or rather: badly implemented) is now called context-sensitivity (good, or rather: good, if done well). you do not want your fortran- or xml-editing commands around when editing haskell, so unless you're prefixing every command with 'haskell-', or refuse to use haskell-specific commands, you're editing haskell in a haskell-mode, right? you could use insert mode as your home mode, and wrap each command sequence to leave insert mode and to return to it, so 'dd' would become '<esc>ddi'. or you could use normal mode as your home mode, and make sure to end every excursion into insert mode with '<esc>'. or you could use vim as it was intended: using insert mode, or normal mode, for what they are good at, and switch between them whenever you like. have you tried 'easy vim', btw? i don't like it myself, but it is useful for getting students started quickly (':help easy', ':help evim-keys'): -y Easy mode. Implied for |evim| and |eview|. Starts with 'insertmode' set and behaves like a click-and-type editor. This sources the script $VIMRUNTIME/evim.vim. Mappings are set up to work like most click-and-type editors, see |evim-keys|. The GUI is started when available. {not in Vi}
files of either stripe) and adjust your editing preferences. It's not a particularly good programmer's editor, but look at the lovely tabbed dialog box with all those lovely HID bits like checkboxes, radio buttons, spin buttons, dropdown lists, lists, etc. Now do the same in GVim and get ... a text file with some editing tricks to make things slightly easier. (It's not immediately obvious how to get rid of it either.)
you're referring to ':options', i assume? and you're aware that the sheer number of options would make a single dialog box hard to design in any useful way? gvim actually permits setting a whole lot of options via its menus, and i tend to set options either in my vimrc file or in a filetype plugin, or directly, using ':set'+tab for command-completion/navigation. yes, the ':options' window doesn't look pretty, merely functional. on the positive side, it is just another text window, so you navigate in it they same way as in any other text window (no separate dialogue-box-mode!-). and since vim is about programmers editing (program) text, handling everything as text is consistent. claus

On Tuesday 22 May 2007 02:30, Claus Reinke wrote:
Vim is eliminated before it reaches the gate because it's a modal editor. Even with GVim in place, it still has that modal stench to it that leaps up and bites at awkward moments.
that's a bit more specific, at least. but as far as i recall, modes were considered bad for specific reasons, such as 'users can't see where they are, modewise', 'functionality becomes unavailable in a mode', 'users have no way to get out of a mode', etc. and most of these specific issues have actually been addressed in vim.
Since no-one else has done so, i thought i should mention Cream: http://cream.sourceforge.net/featurelist.html Cream is a customisation of Vim/gVim, providing a more contemporary GUI style and single-mode editing (although modal editing is available if one wants it) - with all the power of Vim under the hood. :-) Alexis.

On 5/21/07, Michael T. Richter
Code like "makeRandomValueST :: StdGen -> (MyType, StdGen)" (which, incidentally, was far easier to copy from in Gedit than GVim to paste into this message) ...
Really? To copy that line of code in vim you could do: v%y assuming the cursor is in the right place (at the start of the code) and if it isn't it's easy in vim to get it there! Of course, in Windows you must have "guioptions=a" in your config so that all yanks go directly to the Windows clipboard (which should really be in there by default but it isn't). Vim is extremely powerful, but I understand that the steep learning curve is a problem for many. As a developer, I would recommend taking the time to learn advanced features of any editor (whether emacs, vim, or whatever). I presume most developers on this list use regular expressions to navigate their code despite the relatively steep learning curve, correct? BTW: Hello everyone - first post! I planned to wait to introduce myself as a Haskell newbie when I came up with my few questions but as a Vim lover I couldn't resist posting about this! Paul.

Jules Bean wrote:
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.)
Both emacs and vim take into account many of the HID advances made in the past 30 years.
I can't know whether that's the case, but the fact that virtually all commands are invoked with the keyboard clashes with HID research reported at http://www.asktog.com/TOI/toi06KeyboardVMouse1.html It adresses the question whether selecting commands in menus with the mouse or accessing them via keyboard shortcuts is faster. The answer is: "* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding." Regards, apfelmus

apfelmus wrote:
I can't know whether that's the case, but the fact that virtually all commands are invoked with the keyboard clashes with HID research reported at
http://www.asktog.com/TOI/toi06KeyboardVMouse1.html
It adresses the question whether selecting commands in menus with the mouse or accessing them via keyboard shortcuts is faster. The answer is:
"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
The research there is reported as hearsay, it is not referenced research, so I can't check their methods. Despite the implicit claim that my brain must be lying to me and causing amnesia I'm unaware of, I would dispute the claims there. I suspect there might well be a large body of users (even 'most') for which it's true. However 'most' people are not fast typists. I'm sure that I can quite reliably hit the command editor keybindings I use many, many times faster than if I had to select them from a menu. Jules

Jules Bean wrote:
apfelmus wrote:
I can't know whether that's the case, but the fact that virtually all commands are invoked with the keyboard clashes with HID research reported at
http://www.asktog.com/TOI/toi06KeyboardVMouse1.html
It adresses the question whether selecting commands in menus with the mouse or accessing them via keyboard shortcuts is faster. The answer is:
"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
The research there is reported as hearsay, it is not referenced research, so I can't check their methods.
Well, hearsay is probably not the right word but the selection of tasks on which the conclusions are based is indeed vital yet missing. In http://www.asktog.com/SunWorldColumns/S02KeyboardVMouse3.html , he reports on an actual experiment in response to a comment. It can be debated (no use of "advanced" cursor positioning like M-f or M-b?), but for the task at hand (replace all '|' by 'e' in a text by hand) the mouse seems superior. Of course, a find/replace command performs much better, so a keybinding for that would be worth it because it makes the computer perform the task. But in any case, this research can easily be reproduced at home! Of course, nobody (include me) does :)
Despite the implicit claim that my brain must be lying to me and causing amnesia I'm unaware of, I would dispute the claims there. I suspect there might well be a large body of users (even 'most') for which it's true. However 'most' people are not fast typists.
(I think "amnesia" is not a good choice of words. It's more like the well-known effect from a quotation of A. Einstein "Put your hand on a hot stove for a minute, and it seems like an hour. Sit with a pretty girl for an hour, and it seems like a minute. THAT'S relativity.")
I'm sure that I can quite reliably hit the command editor keybindings I use many, many times faster than if I had to select them from a menu.
Note that the claimed time-consuming part is not to actually press the keybinding, but to chose and remember which one to press. Being sure and verified experimentally are two different things. The question cannot be decided by arguments or by stating opions, only the stopwatch can answer it. In a sense, the basic statement is that the human's internal stopwatch is unreliable. Regards, apfelmus

I'm sure that I can quite reliably hit the command editor keybindings I use many, many times faster than if I had to select them from a menu.
Note that the claimed time-consuming part is not to actually press the keybinding, but to chose and remember which one to press.
Yes... except that for a lot of people, programmers especially, a lot of key bindings have become part of your motor memory, and so you can probably hit the common ones quite quickly without having to stop to think about which combination of keys to press. Cut/copy/paste are good examples of this, I think. Alistair ***************************************************************** Confidentiality Note: The information contained in this message, and any attachments, may contain confidential and/or privileged material. It is intended solely for the person(s) or entity to which it is addressed. Any review, retransmission, dissemination, or taking of any action in reliance upon this information by persons or entities other than the intended recipient(s) is prohibited. If you received this in error, please contact the sender and delete the material from any computer. *****************************************************************

Alistair_Bayley:
I'm sure that I can quite reliably hit the command editor keybindings I use many, many times faster than if I had to select them from a menu.
Note that the claimed time-consuming part is not to actually press the keybinding, but to chose and remember which one to press.
Yes... except that for a lot of people, programmers especially, a lot of key bindings have become part of your motor memory, and so you can probably hit the common ones quite quickly without having to stop to think about which combination of keys to press. Cut/copy/paste are good examples of this, I think.
Exactly, this is why my shell, window manager, mp3 player, web browser, and editor all use hjkl to navigate :-) -- Don

On Tue, 2007-22-05 at 10:19 +0200, apfelmus wrote:
I can't know whether that's the case, but the fact that virtually all commands are invoked with the keyboard clashes with HID research reported at
http://www.asktog.com/TOI/toi06KeyboardVMouse1.html
It adresses the question whether selecting commands in menus with the mouse or accessing them via keyboard shortcuts is faster. The answer is:
"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
You beat me to the punch. And to exactly the same URL, in fact.
I see strong parallels between the insistence that keyboarding is faster
than mousing and the insistence that manual memory management is faster
than automated memory management.
--
Michael T. Richter

Michael T. Richter wrote:
On Tue, 2007-22-05 at 10:19 +0200, apfelmus wrote:
I can't know whether that's the case, but the fact that virtually all commands are invoked with the keyboard clashes with HID research reported at
http://www.asktog.com/TOI/toi06KeyboardVMouse1.html
It adresses the question whether selecting commands in menus with the mouse or accessing them via keyboard shortcuts is faster. The answer is:
"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
You beat me to the punch. And to exactly the same URL, in fact.
I see strong parallels between the insistence that keyboarding is faster than mousing and the insistence that manual memory management is faster than automated memory management.
Why not abandon the keyboard, then, and have all your alphanumeric keys neatly lined up in menus? Or perhaps click on a picture of a keyboard? ;) Assuming you wouldn't find the above more convenient, you concede then that some things are faster with the keys than the mouse. So it really is a question of degree. The mouse excels at tasks like 'select a particular large but illdefined (unstructured) chunk of text' : it's a very natural gesture. However as a programmer I am often working with much more structured text, and operations like 'move forward one sub-expression' or 'parenthesise the next two sub-expressions' tilt the balance back in favour of the keyboards. The mouse is an analog input device and it excels at analog operations and exploratory ones (poking around menus and tabbed dialogs). The keyboard is a digital device and it excels at concise precision, such as 'let-float the next 4 definitions up one level'. Jules

"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
Even if it is empirically true that mousing is wall-clock faster than keyboarding, one has to ask the question why users feel internally that keyboarding wins. Perhaps it is because using the mouse requires a cognitive switch from editing the document, to a physical hand-eye co-ordination task, and back again? The mental effort of switching might be harder work than keeping your focus on the document at all times, and therefore switching _feels_ as if it must be slower. Of course this assumes that the person is sufficiently skilled at typing on a keyboard that they do not need to look at it, and hence their eye can stay with the cursor in a window on the screen. Perhaps you can find and move your mouse using only peripheral vision, but even so, the first cognitive task you need to accomplish is to find the mouse pointer on screen, which is invariably in a different place from the text cursor, and so drags your attention from one focus to another. Regards, Malcolm

On Tue, 2007-22-05 at 13:48 +0100, Malcolm Wallace wrote:
"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
Even if it is empirically true that mousing is wall-clock faster than keyboarding, one has to ask the question why users feel internally that keyboarding wins. Perhaps it is because using the mouse requires a cognitive switch from editing the document, to a physical hand-eye co-ordination task, and back again? The mental effort of switching might be harder work than keeping your focus on the document at all times, and therefore switching _feels_ as if it must be slower.
Of course this assumes that the person is sufficiently skilled at typing on a keyboard that they do not need to look at it, and hence their eye can stay with the cursor in a window on the screen.
Perhaps you can find and move your mouse using only peripheral vision, but even so, the first cognitive task you need to accomplish is to find the mouse pointer on screen, which is invariably in a different place from the text cursor, and so drags your attention from one focus to another.
All this talk about "efficiency" while editing text would make me
believe that most of my time spend writing software is typing. Yet,
oddly enough, I find that the typing is the least of my tasks. Most of
my work is done in my head, on whiteboards or on scraps of paper long
before my fingers stroke a keyboard.
--
Michael T. Richter

This recent development of the thread leads me to these conclusions and conjectures. * If you want to demonstrate the mouse to be faster than the keyboard, you can contrive an experiment to do so. Example: Randomize occurences of X's in a text, ask to replace them by Y's, but make sure there is no find-replace command or wizard to help. * If you want to demonstrate the keyboard to be faster than the mouse, you can contrive an experiment to do so. Example: Ask to crack open your favourite Haskell textbook and enter it into the computer. Some of us raise that speed is not the only concern. Indeed, cognitive switch may be more taxing on the worker. However, going on a limb, I'm going to wager that: * If you want to demonstrate the mouse to be less taxing than the keyboard, you can probably contrive an experiment to do so. * If you want to demonstrate the keyboard to be less taxing than the mouse, you can probably contrive an experiment to do so. The keyboard-mouse duality (duelity?) doesn't end here. Some of us explains that keyboarding has become part of our motor skill, and mousing has not quite. So I ask, are there also people who are the opposite? One year I went to COMDEX Canada (in Toronto) and saw a live demo of Photoshop or something. The demonstrator was amazing. He clicked through the menu system faster than I could watch! He performed long sequences of back-to-back menu mousing at a sustained speed paralleling that of my keyboarding. You may say "aha, Photoshop, analog!" but no, in his demo analog operations were the minority, the majority was on the discrete menus - I do mean it when I say long sequences of back-to-back menu mousing. A possible objection would be that he practiced on his demo. But I do invite you to observe someone who uses Photoshop or the like professionally; you may see a level of mouse-fu you never thought possible. But all this musing on HCI and HCI research may all be just talking wind because: Michael T. Richter wrote:
All this talk about "efficiency" while editing text would make me believe that most of my time spend writing software is typing. Yet, oddly enough, I find that the typing is the *least* of my tasks. Most of my work is done in my head, on whiteboards or on scraps of paper long before my fingers stroke a keyboard.
Conventional wisdom would say: Then the priority is on improving the head, the whiteboard, and the paper. Give secondary priority to HCI and IDE dreams.

I did think about this topic many times. My conclusion: We need some other kind of interface (keyboard and mouse at the same time which would speed up your workflow very often, especially when doing some kind of graphics where you have to enter some text).. One solution I did find is http://www.combimouse.com/index.htm .. But I have'nt been able to afford this nice idea to test it. Another is one is http://www.jazzmutant.com/lemur_overview.php (too expensive to be buyed by me in the near future .. ) Another example is the iPod ... stop << >> move the finger to on the surface to scroll play (or something like this), I don't have one. I totally agree that you can't say the one is faster than the other way. When I'm faster using the keyboard (Perhaps I only think I am? :) finding logout (find as you type firefox), because I can even reach the link if it's not in the visible area. Finding directories I use often (because I don't have to look at many files/ directories I'm not interested in.. Perhaps my visual perception is not as fast as the perception of others?) Compare using property editors with code (find property visibility in either alphabetical or sectioned).. Finding menus on Windows (Because the move very often if you install new software, work on foreign computers etc).. But that's why tools like lounchy (windows) exist. Moving Windows using wmii (althoug nifty windows for Win is very nice as well, but you have to take off your hands..) scrolling (using page down/ space / return application dependend) tying gimp<tab> instead of (where the hell is that icon? Oh no it looks different because I have a newer version ..) using special commands such as goto previous cursor position... Opening files using glob patterns in vim (having mapped **/* (eg :e **/*some.hs<tab><cr> ) Opening most recent files having them listed in a buffer where I can use search. (compare this to File -> Open -> c:\MyProjects\..... ) I'm faster using the mouse: navigating in directories I don't know.. (But often I use something like find | less to get an overview ) ... My friend is using the mouse most often. He is very fast. But Sometimes you can't get as fast as using the keyboard because you have to wait till the application pops up the window so that you "see" where to click. (Example: A lot of windows Dialogs (Eg change the PATH variable)) Anyway it would be really interesting to use 2 mice for some tasks. Then you can use one for scrolling and the other to click and drag. Or you can put both on menu items (where you think they'll pop up such as File -> save) and click in sequence. But this havily depends on the application. Eg MS office (Not the new redisigned gui) is horrible because it does always hide the menu items I'm looking for (perhaps because I'm not using them very often or I don't know yet how to switch them off). Another horrible examples are tex editors wether you can click on buttons inserting \alpha \beta etc. Then you are switching between keyboard and mouse all the time. If the mouse is faster why does eclipse have so much opportunities to filter lists/ trees ? But I do know that I really like tools such as xfig / inckscape because they have the keyboard shortcuts I need (select tools/ view ..) And you are definitely faster using them using the mouse to select the tool and moving back. But of course you have to learn them. When watching my sister or my father using the mouse very often they simply click on the small triangle (step up / down) in scrollbars instead of PageUp/Down. But this is a kind of usage pattern which can be <========================[ ] ====> step page left move .... left improved by using scrolling (middle mouse button click), maximizing the window (Windows often doesn't permit this, eg when customizing menus or shortcuts (Visual Studio/ Word etc) before scrolling down a list etc.. I hope I didn't talk too much and that you have found some stuff in this post you didn't know already ... Marc PS: How would mouse gestures compare to keyboard shortcuts concerning the 2 seconds amnesia having been mentioned in article some posts ago?

it should also be noted that there are rsi issues with switching constantly between mouse and keyboard. moving to an environment that focuses on textual input (mutt+emacs+elinks on top of screen on top of xmonad) has allowed me to keep my hands in the ergonomic position dictated by my keyboard. for people with extreme-ergo keyboards (kinesis etc), keeping your fingers in position is important

On Tue, 2007-05-22 at 10:19 +0200, apfelmus wrote:
http://www.asktog.com/TOI/toi06KeyboardVMouse1.html
It adresses the question whether selecting commands in menus with the mouse or accessing them via keyboard shortcuts is faster. The answer is:
"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
Interesting! I did a quick test doing search and replace using the keyboard and the menus in Emacs. It takes me about six seconds with the keyboard, and closer to ten using the menus. (The first time, it took thirty as I spent time to locate the correct menu options :-) But I agree with the report that using the mouse *feels* a lot slower. Quoting the report: "It takes two seconds to decide upon which special-function key to press. Deciding among abstract symbols is a high-level cognitive function." I'm not so sure I agree, using the mouse feels way more abrupt and intrusive. I can do M-x repl TAB str TAB foo RET bar RET with my eyes closed¹, but to use the mouse, I need to locate the mouse with my hand, locate the mouse cursor, locate the menu, etc etc. Maybe that'd change if I used the mouse more? -k ¹ I can, but probably shouldn't. I just tried, but didn't realize focus was not in Emacs but my mail client - which consequently promptly did a bunch of unpredictable things to my draft.

Ketil Malde wrote:
On Tue, 2007-05-22 at 10:19 +0200, apfelmus wrote:
http://www.asktog.com/TOI/toi06KeyboardVMouse1.html
It adresses the question whether selecting commands in menus with the mouse or accessing them via keyboard shortcuts is faster. The answer is:
"* Test subjects consistently report that keyboarding is faster than mousing. * The stopwatch consistently proves mousing is faster than keyboarding."
Interesting! I did a quick test doing search and replace using the keyboard and the menus in Emacs. It takes me about six seconds with the keyboard, and closer to ten using the menus. (The first time, it took thirty as I spent time to locate the correct menu options :-)
But I agree with the report that using the mouse *feels* a lot slower. Quoting the report: "It takes two seconds to decide upon which special-function key to press. Deciding among abstract symbols is a high-level cognitive function." I'm not so sure I agree, using the mouse feels way more abrupt and intrusive.
The question is whether the stopwatch feels the same way :)
I can do M-x repl TAB str TAB foo RET bar RET with my eyes closed¹, but to use the mouse, I need to locate the mouse with my hand, locate the mouse cursor, locate the menu, etc etc.
Note that "locate the menu" is indeed something may take more time than it should. Traditionally, Mac OS features a single menu bar at the top of the screen as opposed to Windows or GNOME. This is a consious design choice whose rationale is explained at http://www.asktog.com/columns/022DesignedToGiveFitts.html In short, Fitt's Law says that the amount of time to navigate to a target on screen depends logarithmically on the ratio (size of target / distance to target). Now, a menu bar at the top of the screen has effectively infinite target size, you can just throw your mouse pointer to the top of the screen and be assured that it hits the top edge = the target. This is much faster than targetting a small menu attached to a window. And it has the additional side effect that the task "locate the mouse pointer" can be partially omitted because only the horizontal position matters if you're going to throw the pointer to the top of the screen anyway. Regards, apfelmus

I have a dream. It's not a little dream. It's a big dream. I have a dream that someday I can find a UNIX/Linux text editor for Haskell hacking (and possibly two or three hundred other programming languages, although that's optional) that can give me all of the following:
'find / -type dream | xargs rm' is not a good way to go about that that search, is it?-) by excluding the editors that fullfill most of your criteria, without any good reason, you're guaranteed to come up empty. "i have a dream that there is an answer to life the universe and everything, and it isn't 42"? you might not like the answer most people give, but there is a reason why that answer is so popular. of course, just because it is one valid answer, it need not be the right answer for you. you just need to be specific about why that particular answer doesn't suit you.
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.)
be specific, please! emacs and vim are often the first to integrate and experiment with whatever new ideas come into view (some even originated there). only few of those experiments find enough followers to make it into the main distributions, though. whatever it is you're missing, if you can't even name it, it can't be good enough reason to discard either emacs or vim). in my experience, most people complain about vim or emacs because they aren't aware of what these can do. it is not just that there is so much functionality and variation available that one has to invest time to learn even parts of that, one new feature a day. it is that much of what people don't like is deliberately not fixed, but configurable. some people don't like the complexity of emacs interactions, and prefer vim's brief and efficient modes&key-strokes, some don't like vim modes and prefer emacs-style commands, some prefer plain text, some prefer gui, some ... you might prefer either vim or emacs, but you shouldn't complain about anything that you can configure yourself (such as modes vs long commands, gui vs text, os-style or vim-style copy&paste, colours and specifics of syntax highlighting, available menus, and so on). vim has a good integrated manual, and tutorials, but if i want that much functionality, i have to learn about it, and spend a lot of time in that documentation. the more my personal needs deviate from default settings, the more i have to learn and configure; the more specific functionality i need the more i have to delve into the details of what is available. if i don't want to learn how to use such powers, i have to make do with a less powerful, out-of-the-box environment. some people are happy with textpad, but i know nobody who has studied all of current vim or emacs. most users start out with the textpad equivalent of functionality in vim or emacs, then add to their knowledge and toolbox as and when they need to do so. looking at your requirements, for vim, to the extent i know it:
2. Good quality syntax highlighting for Haskell that includes all of the usual syntax highlighting goodies, plus:
yes
* the ability to seamlessly handle raw Haskell and both common forms of Literate Haskell;
i stopped using literate haskell long ago, so i can't really say. (i always wanted literate haskell _sessions_, not programs, with definitions, redefinitions, evaluations, explanations, but all with a quite different structure than is useful for the programs being explored/described in such a session)
* the ability to properly highlight Haddock comments;
seem to be highlighted only as comments, by default, but you could change that, if you really wanted to. if the change looks useful, it should make it into the next vim release - that's how the current haskell highlighting got there and keeps developing.
* the ability to highlight functions and types from libraries (user-expandable) differently from local functions and types.
that sounds potentially useful, and some of the information is available (my vim settings have tables of local and library definitions for completion). however, vim doesn't know about haskell scopes, so the easiest solution would be unaware of renaming/hiding/etc.
3. Line folding to hide and show blocks of code.
yes, along with other folding modes
4. Code completion (user-expandable, ideally) for common library functions, type declarations, etc.
several completions, including two user-expandable ones. in my setup, completion can be based on source, tag files, haddock indices, ghci :browse,..
5. Easy, quick access to online documentation for said functions and declarations.
yes. open your favourite browser on the haddocks for the id under cursor.
6. Good (ideally scriptable) access to external utilities for compilation, debugging, profiling, type inference, project management, etc.
yes, and several scripting languages to choose from. quickfix mode is there, the ghci debugger is not yet supported because it is too new, i haven't seen profiling support, but i can ask for type and info for the id under cursor, create tags files, jump to definitions, search in imports,..; since it is all scriptable, ghc's api support is rapidly developing, and other haskell implementation provide apis, too, its all up to haskellers to start linking the two in whatever way they like (most haskellers only have to do the linking for their editor, if there is functionality missing, just tell the api developers - they really like to know).
7. A good plug-in system (ideally written in Haskell?) for expansion.
if you just want to run haskell functions over parts of your text, use '<range>!ghc -e my_function MyLib.hs', and map each such function to some key or menu entry; apparently, vim could also run code from dynamically loaded libraries, but when i last looked into that, it wasn't easy to produce such on all platforms, from haskell, with ghc. if you you just want to control your editor from haskell, vim is remote-scriptable (we used that in the vim interface to HaRe). or emacs can communicate with an asynchronous haskell subprocess (we used that in the emacs interface to HaRe). 8. oh, and of course, you forgot many requirements, such as side-by-side diff views, same functionality on other os platforms, and other miscellanea.
Is there such a beast available out there somewhere? If not, is such a beast lurking in the background ready to pounce in the near future?
no, no. such things can't exist, i'm sure;-) just keep emacs and vim out of the house, and no editing beast will interfere with your dreams (beware the ides, though, they're catching up, too!-) http://www.haskell.org/haskellwiki/Applications_and_libraries/Program_develo... http://www.haskell.org/haskell-mode/ http://www.cs.kent.ac.uk/people/staff/cr3/toolbox/haskell/Vim/ claus ps. no, vim is not perfect!-)

With a slightly less flippant response, have you ever tried TextMate? I
haven't, but I've heard many wax lyrical about its combination of the UNIXy
power of Vim et al with the intuitive and simple UI that OS X has a
reputation for. Unfortunately, it's not free and is only for Mac OS X, but
it seems that it was created by someone who shared your dream (although a
less Haskell-centric version, no doubt).
On 21/05/07, Michael T. Richter
I have a dream. It's not a little dream. It's a big dream. I have a dream that someday I can find a UNIX/Linux text editor for Haskell hacking (and possibly two or three hundred other programming languages, although that's optional) that can give me all of the following:
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.) 2. Good quality syntax highlighting for Haskell that includes all of the usual syntax highlighting goodies, plus:
3. the ability to seamlessly handle raw Haskell and both common forms of Literate Haskell; 4. the ability to properly highlight Haddock comments; 5. the ability to highlight functions and types from libraries (user-expandable) differently from local functions and types.
6. Line folding to hide and show blocks of code. 7. Code completion (user-expandable, ideally) for common library functions, type declarations, etc. 8. Easy, quick access to online documentation for said functions and declarations. 9. Good (ideally scriptable) access to external utilities for compilation, debugging, profiling, type inference, project management, etc. 10. A good plug-in system (ideally written in Haskell?) for expansion.
Is there such a beast available out there somewhere? If not, is such a beast lurking in the background ready to pounce in the near future? -- *Michael T. Richter*
(*GoogleTalk:* ttmrichter@gmail.com) *I have to wonder why people think that when they can't manage local personnel within easy strangling and shooting distance, then they can manage personnel thousands of miles away that have different languages, cultures, and business rules. (Joe Celko)* _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

1. A real GUI 2. Good quality syntax highlighting for Haskell..., plus: 3. raw Haskell both forms of Literate Haskell; 4. properly highlight Haddock comments; 5. highlight functions and types from libraries differently from local 3. Line folding to hide and show blocks of code. 4. Code completion 5. Easy, quick access to online documentation 6. access to external utilities for compilation, debugging, profiling, type inference, project management, etc. 7. A good plug-in system
Having dismissed Visual Haskell for being Windows-only, have you considered EclipseFP? It doesn't tick all of your boxes, but maybe it goes far enough in the right direction. AFAICT it fulfills 1, 2.3, 2.5 (but I'm not sure about this), 3, 6, and 7 (ish - plugins would be written in Java). Alistair ***************************************************************** Confidentiality Note: The information contained in this message, and any attachments, may contain confidential and/or privileged material. It is intended solely for the person(s) or entity to which it is addressed. Any review, retransmission, dissemination, or taking of any action in reliance upon this information by persons or entities other than the intended recipient(s) is prohibited. If you received this in error, please contact the sender and delete the material from any computer. *****************************************************************

1. A real GUI 2. Good quality syntax highlighting for Haskell..., plus: 3. raw Haskell both forms of Literate Haskell; 4. properly highlight Haddock comments; 5. highlight functions and types from libraries differently from local 3. Line folding to hide and show blocks of code. 4. Code completion 5. Easy, quick access to online documentation 6. access to external utilities for compilation, debugging, profiling, type inference, project management, etc. 7. A good plug-in system
Having dismissed Visual Haskell for being Windows-only, have you considered EclipseFP? It doesn't tick all of your boxes, but maybe it goes far enough in the right direction. AFAICT it fulfills 1, 2.3, 2.5 (but I'm not sure about this), 3, 6, and 7 (ish - plugins would be written in Java). There is also some experimentation under way to implement plugins in Haskell: http://leiffrenzel.de/eclipse/cohatoe/ The Haskell code is
Bayley, Alistair wrote: plugged into Eclipse via hs-plugins. However, the ultimate entry point to the IDE is still Eclipse's, so there will be some Java/XML boilerplate necessary for getting a plugin hooked. Thanks && ciao, Leif
Alistair ***************************************************************** Confidentiality Note: The information contained in this message, and any attachments, may contain confidential and/or privileged material. It is intended solely for the person(s) or entity to which it is addressed. Any review, retransmission, dissemination, or taking of any action in reliance upon this information by persons or entities other than the intended recipient(s) is prohibited. If you received this in error, please contact the sender and delete the material from any computer. ***************************************************************** _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

You mentioned a "dream" .... Have you looked at Yi? ....might be worth a peek if you're prepared to work towards your dream. http://www.haskell.org/haskellwiki/Yi ...a long way to go - but it certainly nails #7! --Ben On 21 May 2007, at 15:44, Leif Frenzel wrote:
1. A real GUI 2. Good quality syntax highlighting for Haskell..., plus: 3. raw Haskell both forms of Literate Haskell; 4. properly highlight Haddock comments; 5. highlight functions and types from libraries differently from local 3. Line folding to hide and show blocks of code. 4. Code completion 5. Easy, quick access to online documentation 6. access to external utilities for compilation, debugging, profiling, type inference, project management, etc. 7. A good plug-in system Having dismissed Visual Haskell for being Windows-only, have you considered EclipseFP? It doesn't tick all of your boxes, but maybe it goes far enough in the right direction. AFAICT it fulfills 1, 2.3, 2.5 (but I'm not sure about this), 3, 6, and 7 (ish - plugins would be written in Java). There is also some experimentation under way to implement plugins in Haskell: http://leiffrenzel.de/eclipse/cohatoe/ The Haskell code is plugged into Eclipse via hs-plugins. However, the ultimate entry
Bayley, Alistair wrote: point to the IDE is still Eclipse's, so there will be some Java/XML boilerplate necessary for getting a plugin hooked.
Thanks && ciao, Leif
Alistair ***************************************************************** Confidentiality Note: The information contained in this message, and any attachments, may contain confidential and/or privileged material. It is intended solely for the person(s) or entity to which it is addressed. Any review, retransmission, dissemination, or taking of any action in reliance upon this information by persons or entities other than the intended recipient(s) is prohibited. If you received this in error, please contact the sender and delete the material from any computer. ***************************************************************** _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 21/05/07, Michael T. Richter
Easy, quick access to online documentation for said functions and declarations.
I'm writing this for Emacs right now. At the moment both Emacs and Vim can access everything that GHCi has to offer on a function, which means where it's defined, it's type and so on, but not Haddock documentation. I'm extending haskell-mode's inf-haskell.el to take this into account. -- -David House, dmhouse@gmail.com

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

On Mon, May 21, 2007 at 06:37:22PM +0800, 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.)
heh. find me a new GUI editor that takes into account the HID advances that were well established 30 years ago and I will be happy. I am all for innovation, but not at the cost of needed and useful functionality. I recently had a discussion with a coworker where he went off for a long time about his new 'refactoring' editor, telling me cool stuff he could do with it. Excited and interested, I went to see what it was about (I always am interested in new stuff, especially if it can make my life easier). I watched as he used pop-up windows and dialogs to happily indent and unindent methods and rename variables, after which he turned to me and said proudly "now this is refactoring.". To which, I, puzzled, responded, "Really? to me it just looked like you were editing." It is a perhaps sad fact that a lot of innovation when it comes to editing interfaces is simply one of terminology. Inventing names for well established practices, imbuing them with the magical power of buzzwords to sway opinion in the face of rationality and then dismiss every feature that one cannot list on a features FAQ as irrelevant. It is somewhat depressing that immutable pre-packaged macros[1] and the simple brute-force inclusion of separate tools[2] into the editor are hailed as innovation, when new innovations, whether they are simple refinements of old ideas[3], excercises in orthoginality[4], or truely new research[5] are left to the wayside. But such is the power of the bullet point. John [1] many (but not all) refactoring features i have seen. [2] http://en.wikipedia.org/wiki/Cscope [3] http://en.wikipedia.org/wiki/Sam_(text_editor) [4] http://en.wikipedia.org/wiki/Acme_%28Plan_9%29 [5] http://tlau.org/research/smartedit/ -- John Meacham - ⑆repetae.net⑆john⑈

John Meacham wrote:
It is somewhat depressing that immutable pre-packaged macros[1] and the simple brute-force inclusion of separate tools[2] into the editor are hailed as innovation, when new innovations, whether they are simple refinements of old ideas[3], excercises in orthoginality[4], or truely new research[5] are left to the wayside. But such is the power of the bullet point.
John
[1] many (but not all) refactoring features i have seen.
This is a little harsh. The refactoring features I've seen (in Eclipse) are more than macros; they are semantically aware. That is, they understand the scoping and typing of the language and they can distinguish between 'a' in an inner scope and 'a' in an outer scope, so they they can do a safe rename. Then can also distinguish between List (the class imported from my.cool.package) and List (the class imported from java.main.package) and do a safe multi-file rename so you have a true 'atomic' class renaming ability. These things go well beyond syntactic macros. It is often stated that Java has such powerful IDEs because it's such a tedious language to edit without them, and I have some sympathy for that line of argument, but I would love to have local definition floating and project-global rename and so on in my haskell editor. I know people are working on this stuff. Jules

While I strongly disagree with you on the fact that "refactoring" is just big macros (well it is, simply they're macros which operate more on structured code than on structured text, ie they're aware of the semantic of the language on which they're operating, and I don't know you but I don't code macro like that in less than a few days/weeks (/months ?)... Let's say _really_ big macros and settle at that), I thank you for introducing me to acme. It seems really interesting, and with the acme-sac project I can use it on my OS. So thanks. (Oh and if you saw things your coworker called refactoring and you would have done as well with a one-line macro in emacs (or even a standard command), it's just that you're right to consider "refactoring" as a buzzword, but it's not only that) -- Jedaï

Michael T. Richter wrote:
I have a dream. It's not a little dream. It's a big dream. I have a dream that someday I can find a UNIX/Linux text editor for Haskell hacking (and possibly two or three hundred other programming languages, although that's optional) that can give me all of the following:
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 don't suppose you're familiar with the Dylan programming language, or more to the point, have looked at the IDE that Apple included in their original implementation of the language (around 1993 or so)? Characteristic of Apple of that time, the UI was both highly innovative and a joy to use. It was based around "browsers", where each browser had a "subject" (such as a project, module, definition etc.) and an "aspect" (such as "contents of", "errors in", "references to", "direct methods of" etc.). Browsers could be linked so that the selection in one browser became the subject in another. This made it very easy to navigate your project. All code was stored in a database rather than as text files, and individual code definitions were separate objects in the browsers rather than pieces of text in a big file. Info w/ screenshots: http://osteele.com/museum/apple-dylan http://wiki.opendylan.org/wiki/view.dsp?title=Apple%20Dylan Needless to say, this goes in rather the opposite UI direction to the "Ctrl-M Ctrl-Meta-Z <esc> :edit qx" approach to editors that some people prefer. Dylan's not a bad language, and there are open source implementations available for Gnu/Linux. But if you want to check out Apple's IDE, you'll really need a 68K Mac, as the PPC version is very buggy and I don't think the 68K version will run in PPC. -- Ashley Yakeley Seattle, WA

Am 23.05.2007 um 00:20 schrieb Ashley Yakeley:
I don't suppose you're familiar with the Dylan programming language, or more to the point, have looked at the IDE that Apple included in their original implementation of the language (around 1993 or so)? Characteristic of Apple of that time, the UI was both highly innovative and a joy to use. It was based around "browsers", where each browser had a "subject" (such as a project, module, definition etc.) and an "aspect" (such as "contents of", "errors in", "references to", "direct methods of" etc.). Browsers could be linked so that the selection in one browser became the subject in another. This made it very easy to navigate your project.
All code was stored in a database rather than as text files, and individual code definitions were separate objects in the browsers rather than pieces of text in a big file.
Info w/ screenshots: http://osteele.com/museum/apple-dylan http://wiki.opendylan.org/wiki/view.dsp?title=Apple%20Dylan Needless to say, this goes in rather the opposite UI direction to the "Ctrl-M Ctrl-Meta-Z <esc> :edit qx" approach to editors that some people prefer.
Dylan's not a bad language, and there are open source implementations available for Gnu/Linux. But if you want to check out Apple's IDE, you'll really need a 68K Mac, as the PPC version is very buggy and I don't think the 68K version will run in PPC.
Michael's blog: http://snakeratpig.blogspot.com/2007/02/road-to-haskell.html Dylan and Haskell are very similar in the multiple-dispatch (a haskeller would call that pattern matching on several arguments) respect. Cheers, Gabor PS: Btw, the Apple Dylan IDE works well on PPC if you apply a patch that was issued by Digitool shortly after the initial port of the IDE to PPC.
participants (26)
-
Albert Y. C. Lai
-
Alex Queiroz
-
Alexis
-
apfelmus
-
Arthur van Leeuwen
-
Ashley Yakeley
-
Bayley, Alistair
-
Ben Moseley
-
brad clawsie
-
Chaddaï Fouché
-
Claus Reinke
-
David House
-
dons@cse.unsw.edu.au
-
Gabor Greif
-
John Meacham
-
Jules Bean
-
Ketil Malde
-
Leif Frenzel
-
Malcolm Wallace
-
Marc Weber
-
Michael T. Richter
-
Neil Mitchell
-
Paul Drummond
-
Rodrigo Queiro
-
Thomas Davie
-
Thomas Schilling