[Haskell-cafe] Scraping boilerplate deriving?

John Meacham john at repetae.net
Tue Sep 14 17:01:32 EDT 2010


On Tue, Sep 14, 2010 at 01:24:16AM -0700, Kevin Jardine wrote:
> I have a set of wrapper newtypes that are always of the same format:
> 
> newtype MyType = MyType Obj deriving (A,B,C,D)
> 
> where Obj, A, B, C, and D are always the same. Only MyType varies.
> 
> A, B, C, and D are automagically derived by GHC using the
> 
> {-# LANGUAGE GeneralizedNewtypeDeriving #-}
> 
> feature.
> 
> I would like to use some macro system (perhaps Template Haskell?) to
> reduce this to something like
> 
> defObj MyType

How about the straightforward?

> {-# LANGUAGE CPP #-}
> #define defObj(t)   newtype t = t Obj deriving (A,B,C,D)
>
> defObj(Foo)
> defObj(Bar)
> ....

It has the advantage of being (de facto) portable.

        John


-- 
John Meacham - ⑆repetae.net⑆john⑈ - http://notanumber.net/


More information about the Haskell-Cafe mailing list