Using singletons in Haskell to create a Storable, type-safe relational database representation