bindings to C libraries. The tool processes existing C header files that
determine data layout and function signatures on the C side in conjunction with
Haskell modules that specify Haskell-side type signatures and marshaling
details. Hooks embedded in the Haskell code signal access to C structures and
functions -- they are expanded by the interfacing tool in dependence on
information from the corresponding C header file. Another noteworthy property
is the lightweight nature of the approach.