September 2016
Intermediate to advanced
408 pages
9h 18m
English
The Haskell types Ptr a and FunPtr a represent pointers in foreign, raw memory (outside the Haskell heap). Relevant operations on foreign pointers are provided by the Storable type class, which has instances for primitive marshallable data types. A third pointer type is StablePtr a, which is a pointer to an object in the Haskell heap.
On top of passing primitive values and pointers through the FFI, almost arbitrary data can be marshalled between Haskell and C (and by extension other languages) relatively easily.
A centric type-class in marshalling is Foreign.Storable.Storable. Storable types must provide a length, byte alignment, and the methods peek and poke:
class Storable a where ...
Read now
Unlock full access