Using Template Haskell to derive the structure of records and simulate structural subtyping| Arthi-chaud