home
Leksah is a Haskell IDE (Integrated Development Environment) written in Haskell based on Gtk+ and gtk2hs. Leksah is a practical tool to support the Haskell development process. It is platform independent and should run on any platform where GTK+, gtk2hs and GHC can be installed. (It is currently been tested on Windows and Linux but it should work on the Mac. It only works with the Glasgow Haskell Compiler (ghc).
Haskell is an advanced purely functional programming language. Haskell is based on a community effort which started 1987. The current language definition is the Revised Report of Haskell 98. Work started in late 2005 on the next revision of the Haskell language under the working-title Haskell' (Haskell-prime). Haskell has a wide set of libraries available (See the Standard Libraries and the Hackage library database) and an active and growing community. Haskell is ready to produce flexible, maintainable and high-quality software. Industry adoption is in the very beginning but may grow quickly. Last but not least Haskell is a beautiful language and it is really fun to use.
There are a number of compilers and interpreters available. All are free. GHC is a state-of-the-art, open source, compiler and interactive environment for the functional language Haskell. It is the "flagship" Haskell compiler with features like a wide variety of language extensions, generation of fast code, it works on several platforms including Windows,Linux and Mac and it supports profiling, interpreted code and debugging.
Until Leksah, there was no dedicated Haskell IDE available. Most developers used Editors like Emacs or Vim, which have Haskell modes available together with a shell and several special tools like
- Cabal for Haskell package management
- Haddock for Haskell source documentation
- Darcs for Revision control (which is very popular in the Haskell community, because it is written in Haskell
- And maybe several other tools like HaRe for refactorying, lhs2tex for puliciations, …
This may work very well but it makes it difficult for a beginner to start developing and is not what is considered todays state of the art of software development, where IDEs like Eclipse and VisualStudio are in widespread use. There are now efforts to develop plugins for Eclipse (EclipseFP) and VisualStudio (Visual Haskell) which may be a better alternative to Leksah.
There are compelling reasons for a Haskell IDE written in Haskell. First and most important Haskell is different from mainstream imperative and object oriented languages and a dedicated IDE may exploit this specialness. Second the integration with an existing tool written in a different language has to solve the problem of integration of different programming languages/paradigmes. Visual Haskell solved it via a Haskell/COM interface, while EcliseFP recently switched from developing everything in Java to the the so called Cohatoe Framework for integrating Haskell Code in Eclipse. There were earlier efforts to write a dedicated Haskell IDE, namely HIDE and Haste, which seems to be orphaned. The 2005 GHC survey showed lots of requests for an IDE, and the theme comes up from time to time on the Haskell Cafe mailing list.
Another project is Yi, which is an Editor written from scratch in Haskell. When I started Leksah I considered to build it on top of Yi, but at that time Yi was difficult to install and was not working under Windows. As well Yi is going in the direction to be something like "Emacs wirtten in Haskell", which is not my aim. For the future it would be a nice project, to replace the gtksourceview based editor with Yi.
Concepts
Jumping to code
Leksah builds a database from the Haskell interface files of all installed packages and parses the source to add source locations and comments if possible. This makes it possible to know of all exported ids, even those you have not imported correctly yet.
Integration of Cabal
All functionality of Cabal is integrated in the GUI, the most important part being the build, with jumping to next and previous error and all this. Very shortly we will have a full graphical editor for Cabal files (I say this since half a year now)
Haskell Editor with "source candy"
The Editor has the dangerous source candy feature. Leksah reads and writes pure ASCII Code files, but can nevertheless show you nice symbols for lambda and so on .This is done by replacing certain character combinations by a Unicode character when loading a file or when typing, and replace it back when the file is saved.
Configurable Keymap
You can configure the keystrokes by editing a .keymap file. Not only simple gtk keystrokes, but as well complex emacs like keybindings are supported.
Configuration
Every aspect of Leksah is configurable via a configuration files. The Layout can be freely configured by splitting, collapsing and moving areas and panes. Leksah remembers the state of a session when you close it.
Plans for version 1.0
- Class Hierarchy pane
- Completion
- Search
- Haddock integration
- Import helper
- Editor improvements: E.g. Highlighting according to file type
- Working Cabal file editor with configurations
- Improvements and fixes in the source collector
- Bug fixes
Plans for version x.y.
- Debugging support
- Versioning support (Darcs)
- Test support (Quick check)
- Coverage (HPC)
- Profiling (Ghc Profiler)
- Refactoring (HaRe)
- FAD (Functional Analysis and Design)
- Plugins