	  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.
