Good Haskell source to read and learn from [closed]

What are some open source programs that use Haskell and can be considered to be good quality modern Haskell? The larger the code base, the better.

I want to learn from their source code. I feel I'm past the point of learning from small code examples, which are often to esoteric and small-world. I want to see how code is structured, how monads interact when you have a lot of things going on (logging, I/O, configuration, etc.).


What I recommend.

Read code by people from different grad schools in the 1990s

  • Oxford style
  • Glasgow style or (this)
  • Chalmers style (or this)
  • York style
  • Portland style or OGI style (or this)
  • Utrecht style
  • Yale style
  • Special case: CMU/Elliott

Read code by the old masters certain people (incomplete list)

  • Marlow; Paterson; Peyton Jones; Gill; Launchbury; Hughes; Wadler; Bird; Claessen; Jones; Tolmach; Sheard; Swiestra; Augustsson; Runciman; Wallace; Thompson; Hinze; Gibbons; Leijen; Hudak; Elliott; Finne; Chakravarty; and
  • Anyone who has written a functional pearl.

Note that people like me, Coutts, Mitchell, O'Sullivan, Lynagh, etc. learned our Haskell style from these guys.

Read some applications

  • Read the GHC base library source
  • Read the xmonad source

XMonad is an open source tiling window manager, originally loosely modeled on dwm. There are a lot of extensions, of varying quality, but the core is compact and well organized.


  1. Haskell: Functional Programming with Types

    Joeri van Eekelen, et al. | Wikibooks Published in 2007, 290 pages

  2. Learn You a Haskell for Great Good!

    Miran Lipovaca | LearnYouaHaskell.com Published in 2010, 176 pages

  3. Real World Haskell

    B. O'Sullivan, J. Goerzen, D. Stewart | O'Reilly Media, Inc. Published in 2008, 710 pages

  4. The Haskell Road to Logic, Maths and Programming

    Kees Doets, Jan van Eijck | College Publications Published in 2004, 449 pages


Darcs is an open source, source code management system. It should give you a nice idea for Haskell.