Templates for the Haskell FFI Marshalling Library -*-text-*- ------------------------------------------------- The Haskell modules in this directory define the interface and behaviour of the Haskell FFI Marshalling Library. Wherever possible, Haskell 98 definitions have been used to specify the behaviour. Where this was not possible, informal descriptions have been used. This is in the spirit of the definition of the Haskell Prelude and the Haskell Standard Libraries. The library is partitioned into a language independent and a C specific component. All features of the former can be imported from `Foreign' and all features of the later from `CForeign'. Nevertheless, the following module hierarchy is part of the interface definition: Foreign Int Word Ptr ForeignPtr StablePtr Storable MarshalAlloc MarshalArray MarshalError MarshalUtils CForeign CTypes CTypesISO CError CString The definition was designed and composed by the FFI Task Force. Haskell systems implementers are encouraged to re-use as much of the code in their implementations as feasible. However, alternative - possible more efficient - implementations are admissible provided they implement the exactly same semantics.