A (missing) Haskell FFI tutorial: how to work with nested Structs and do bi-directional C<->Haskell interop