structured-mongoDB-0.1: Structured MongoDB interface    This
module exports a Structued type class which can be used to
convert from Haskel "record types" to BSON objects and vice
versa. We use Templace Haskell to provide a function
deriveStructured which can be used to automatically generate an
instance of such types for the Structured and BSON's Val
classes.  For instance:   data User = User { userId :: Int
, userFirstName :: String                   , userLastName ::
String              deriving(Show, Read, Eq, Ord, Typeable)
$(deriveStructured ''User)  deriveStrctured used used to create
the following instance of Structured:   instance Structured User
where    toBSON x = [ (u "_id")           := val (userId x)
, (u "userFirstName") := val (userFirstName x)               ,
(u "userLastName")  := val (userLastName x)    fromBSON doc =
lookup (u "_id")             doc >>= \val_1 ->
lookup (u "userFirstName")   doc >>= \val_2 ->
lookup (u "u