Haskell implementation of the lightweight object system for obj-c FFI