| Title | Extending GuiHaskell: An IDE for Haskell Hackers |
|---|---|
| Student | Asumu Takikawa |
| Mentor | Neil David Mitchell |
| Abstract | |
|
--Introduction--
The success and penetration of a programming language or platform often hinges on the tools that are available for use with that language. For example, a widely cited reason for the popularity of Microsoft's .NET platform is because of the ease of use offered by the VisualStudio IDE. Even more obscure languages have benefited from a robust tool-set. Scheme, a language noted for its use in education, has Dr. Scheme[1], an IDE developed and used with the How to Design Programs textbook. Haskell itself has likely observed a boost in popularity with Darcs, a flagship product of the community that is used throughout Haskell development now. Given this, I propose to further develop GuiHaskell[2], an existing effort to develop a useful Haskell IDE. --Status-- At the moment, GuiHaskell is capable of running a Hugs and GHCI environment inside of it. However, one cannot switch between the two without editing the source and re-compiling. Most of the toolbar buttons are also non-functional. I propose to add the following capabilities within the three month allocation: * Capability of running main Haskell implementations, e.g. Hugs, GHCI, Yhc, nhc, Jhc, etc. * Functioning toolbars and menus. * Create a framework for linking the application with existing Haskell tools, e.g. debuggers, profilers, etc. The following features will be looked into and worked on if there is additional time (I estimate that there will be): * Profiling. * Cabal integration for building and installing packages. * Hoogle support. * Support for a debugger. * Syntax highlighting. * Simple editor integration: open up an editor separately and jump to the appropriate line on an error in the REPL. Hyperlink to the editor instead of embedding it. * Editor embedding: external editors can be integrated into the application using GTK's Plug and Socket widgets (see PIDA[3] for example). This would allow the use of vim and possibly emacs within the IDE (a desirable feature because it would decrease the learning curve for users of those editors). * Editor-pane and REPL-pane: DrScheme uses an interface where the main pane contains a standard editor that can save and open files and a secondary pane contains the REPL. When the evaluator is run, the file opened in the main pane is run and any functions or variables defined can be used from the REPL. This design would fit the Haskell development cycle as well. Here I will list some additional niceties that could be added to the project after the summer of code: * User's manual and in-depth documentation of features. * Expand IDE to include advanced features such as class/type browser panes and project management like other full-featured IDEs (e.g. Eclipse, VisualStudio, etc.) --Preliminary timeline-- Planning: Decide whether to extend PropLang, re-write using Gtk2Hs, or extend using Gtk2Hs. (I have taken the third approach in initial patches because it is easiest for now) Week 1-2: Support for adding multiple Haskell environment and the capability of switching between them. Week 3-4: Get menus and toolbars functioning to the level of WinHugs at least. Week 5: Investigate how to integrate external tools into the IDE. It may be helpful to look at the approaches of other IDEs (e.g. PIDA, Eclipse, etc.) as well. Week 6: Work on integrating cabal tools. Week 7: Work on integrating profiling tools. Week 8: Additional time for integrating cabal/profiling. Start on hoogle integration or syntax highlighting. Weeks 9 and beyond: Add additional features (e.g. editors, debugger, etc.) and streamline the existing ones (e.g. one-click operation). |
|