A C-callable library providing a Haskell interpreter/compiler. It should allow primitive-level extension using a tool like Green Card, if not Green Card itself. Compare Tcl and Guile.
A Haskell library of types representing MIME types. These can be used as types for specialized versions of shell commands. For example, you can match on the kind of input file to specialize functionality.
A Haskell 98 library of shell utilities. It should provide functionality equivalent to a typical shell (both built-ins and executables), while being strongly typed and purely functional.
Glue together HUILE, LoSE, and GNU readline, and we have a shell. Note that there will be some interesting user interface design (despite the fact that this is a textual shell). For example, most shells have a highly stateful environment. The current working directory is a particularly un-functional concept. However, forcing shell users to pass around a directory all the time would be a pain.
Careful design of the types of some built-ins, combined with careful design of the textual display of those built-ins, might alleviate this somewhat. For example, consider 'cd' and 'ls':
cd :: Path -> IO Environment ls :: IO Environment -> [ Path ]
If the command line implicitly has the return value of the previous expression, then this might work well. It actually leads, oddly, to a highly stateful way of using shell commands by typing in expressions piecemeal and seeing how they evolve.
Of course, this isn't fully thought out - for one thing, the arguments are in the wrong place. For another, it has no support for options to 'ls' or 'cd'.
Bindings from Haskell to KDE and Qt. There are some interesting aspects here, as Qt pre-processes C++ code to insert some grotty stuff to automate some of the tedium of UI programming (I'm thinking specifically of the whole signal/slot mess). A direct Haskell binding may be able to obviate most of that grot, and call "raw Qt" directly.
Add MHAK to HaSh. In particular, KHaSh should be aware of its state (ugh :-) when the user logs out and come back right where it was left. Bash does some of this with its history file, sort of, but it isn't integrated into KDE (so KDE thinks there's unsaved data). This should of course support all sorts of nifty option dialogs and such.
Another neat trick that should be supported is drag and drop. Drag an expression from one KHaSh to another, or drop on a source file, or even a data file (making it the argument of the next function call, perhaps)
This is an add-on for KHaSh. It's a place to drop Haskell expressions, where they become push buttons that can be dragged back to the shell or activated directly.
Coming up with a way to automatically provide useful icons for the expressions should be interesting.
A KDE-aware Haskell expression that sits in kpanel and runs periodically. This could be used for biff-like uses, or automated news monitoring or background music or any number of other things.