<br>On Tue, Sep 14, 2010 at 10:24, Kevin Jardine wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div id=":1qq">

I have a set of wrapper newtypes that are always of the same format:<br>
<br>
newtype MyType = MyType Obj deriving (A,B,C,D)<br>
<br>
where Obj, A, B, C, and D are always the same. Only MyType varies.<br>
<br>
A, B, C, and D are automagically derived by GHC using the<br>
<br>
{-# LANGUAGE GeneralizedNewtypeDeriving #-}<br>
<br>
feature.<br>
<br>
I would like to use some macro system (perhaps Template Haskell?) to<br>
reduce this to something like<br>
<br>
defObj MyType<br>
<br>
I&#39;ve read through some Template Haskell documentation and examples,<br>
but I find it intimidatingly hard to follow. Does anyone has some code<br>
suggestions or pointers to something similar?</div></blockquote></div><br>This works in TH:<br><br>&gt; [d|newtype Blah = Blah Int deriving (Num,Show,Eq)|]<br><br>But the parameterized variations on this theme do not:<br>

<br>&gt; derive1 name = [d|newtype $name = Blah Int deriving (Num,Show,Eq)|]<br>Malformed head of type or class declaration<br><br>&gt; derive2 name = [d|newtype Blah = $name Int deriving (Num,Show,Eq)|]<br>parse error in data/newtype declaration<br>

<br>I think it has something to do with the type of the splice. Perhaps you can look into further: <a href="http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/template-haskell.html">http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/template-haskell.html</a><br>

<br>Sean<br>