[Projects] [Screencasts] [Publications] [Talks]

Be welcome, oh wanderer on electronic paths, to a part of my online home relating to my Haskell activities. This webspace is a partially evaluated [thunk]. If you happen to need any of the material from my old web pages that isn't available here, please let me know (<username> @ community.haskell.org), as those pages aren't going to be there forever.

Projects

Name Description Status
Haskell Mode Plugins for Vim Support for editing Haskell code in Vim, with quickfix mode, documentation lookup, insert mode completions, adding of imports and qualifiers, .. [screencasts] Maintained on code.haskell.org by myself.
GHood Graphical animation of Haskell object observations. Visualize the relative strictness of demands across observation probes added to your program. Both standalone GUI and in-browser applet, so you can document strictness issues by putting graphical animations on your web pages (the project page includes a few online examples). Maintained on hackage by Hugo Pacheco.
HCPN Haskell-Coloured Petri Nets. WxHaskell-based graphical editor and simulator for Coloured Petri Nets, using Haskell as inscription and implementation language. Dormant (great potential, but needs funding for intensive development, and to go beyond coloured Petri nets). Last updated to build with GHC ??/WxHaskell 0.8 (I do have a version that builds with GHC 6.10.3 and WxHaskell 0.11, but the WxHaskell binaries for Windows seem to be missing a critical component).
HaRe / RFP The Haskell Refactorer (developed in our EPSRC project "Refactoring Functional Programs", with Simon Thompson and Huiqing Li). Our original tool supported module-aware refactorings over full Haskell'98 code, accessible from either Emacs or Vim. [screencast] Dormant (greatly needed, but the reality of a GHC-/Cabal-based development environment these days is rather different from a source-based Haskell'98 world; the ideas should be reimplemented on top of the GHC Api, with some integration work needed to adapt to challenges posed by GHC Api/Cabal, but this needs proper funding). Last updated to build with GHC 6.8.3.
FunWorlds Functional Programming and Virtual Worlds. A variant of functional reactive programming, with a simple VRML-inspired scene graph rendered via OpenGL/Glut. Dormant (good potential, but needs funding for cleanup, modernizing, more intensive development). Last updated to build with GHC 6.10.
SimpleGo Simple Monte-Carlo Go player, according to the computer-go mailing list's reference specification, supporting human-vs-bot and bot-vs-bot play via Go Transfer Protocol GTP (GoGui is a useful set of tools and interface for playing GTP-based bots). Nice to be able to combine learning about Go, modern AI/search techniques, and Haskell performance, all in one small project!-) In development, every now and then. 50% win rate against the Java reference bot implementation, so it should be fairly correct. Not nearly as fast as the fastest Haskell-based MC Go player I know, yet.
HCAR Haskell Communities and Activities Reports (biannually, since November 2001). Maintained and developed on haskell.org by current editor Janis Voigtlaender.
.ghci Getting more out of GHCi, via useful command definitions for capturing and filtering command output. Originally presented in this email tutorial on haskell-cafe. See Haskell wiki page for more GHCi tips. In development, every now and then. Mostly just used.
ghc-syb Scrap Your Boilerplate instances for GHC Api types, to enable generic GHC Api AST traversals (this is part of the old experimental package syb-utils, the other part has moved into the standard syb package, though it might not yet be enabled there - see syb home page/issue tracker). Maintained on hackage by Thomas Schilling.
Data.Label Data.Label.TH labels.hs Non-atomic "atoms" for type-level programming. Addresses the old type-sharing issue for record labels and type tags (if the same labels/tags are defined in separate modules, they represent separate types, preventing shared uses), by constructing "atoms" from smaller parts. The parts can be shared (no need to know all possible uses in advance), and Template Haskell QuasiQuoting can be used to deconstruct actual uses of labels and type tags into the parts imported from Data.Label. New (14/04/2009).
Data.Record Extensible concatenable records library for GHC (expanded version of the old haskell prime #92 attachment; compare ghc wiki page ExtensibleRecords for other recent proposals). See comments and examples inside for documentation. Dormant (needs organization/API design, and indication of external interest). These days, most people seem to hack their own versions as needed, or use HList.
R.hs While still in Mark Jones' Languages and Programming group in Nottingham (around 1998), I was thinking about referential transparency and overloading, and stumbled on a way to make numerical operations return a representation of their applications in addition to the actual numeric result. Useful for visualizing foldl vs foldr and stuff. More generally speaking, evaluating an expression can return either its value, or its representation, supporting applications that would otherwise need reflection. No further development planned. These days, there are more complete variants available on hackage.org (also in lambdabot?).

This list is incomplete - if you are looking for a project not listed here, or if you are representing a group interested in funding further development (especially for Haskell-Coloured Petri Nets or Haskell programm transformations a la HaRe), please get in touch.