Language.C - A C99 library for haskell

The Language.C project aims to be a stable and compliant C99 language processing library for  haskell.

As for now, it features a complete, reasonably well tested parser and pretty printer for all of C99 and a large set of GNU extensions (C language support).

Eventually, we also want to provide a complete analysis framework for C.

Bug Tracker / Wiki / Mailing List

This trac site hosts both the Wiki and the Bug Tracker for language.c. In order to edit wiki sites and create or modify tickets, you need to login. Either -register- (disabled due to spam), or use 'guest' as a user name and 'g0st+2010' as password.

There is also a mailing list for language-c, thanks to the haskell community server: (language-c at

If you have questions, suggestions or comments, please CC the mailing list !

Good news, everybody

  • 2016/03/02: Release 0.5.0 (__int128 support for c2hs)
  • 2011/08/17: Released 0.4.1
  • 2009/01/26: Released (Bugfix release)
  • 2008/08/26: Released 0.3.1
  • 2008/08/12: Released 0.3




  •  In this blog post keigoi shows how to move declarations to the top of statement blocks using Language.C and Data.Generics (japanese). The  follow up shows how to convert C99 flexible array members to arrays of size 0.


  • Please submit bug reports and feature request using the  bug tracker
  • You may also contact the me at benedikt <dot> huber <at> gmail <dot> com


Language.C is released under the BSD-3 license.


Google's  Summer Of Code funded Benedikt Huber to work on this project (updated detailed proposal?).  Iavor Diatchki and  Don Steward have been the great supervisors and Duncan Coutts provided a lot of valuable suggestions.