hsc2hs: A preprocessor that helps with writing Haskell bindings to C code

The hsc2hs program can be used to automate some parts of the
process of writing Haskell bindings to C code. It reads an
almost-Haskell source file with embedded special constructs, and
outputs a real Haskell file with these constructs processed, based
on information taken from some C headers. The extra constructs
provide Haskell counterparts of C types, values of C constants,
including sizes of C types, and access to fields of C structs.