Hi,<br><br>I&#39;ve defined a class and some instances, which I&#39;m hoping would help me &quot;show&quot; values of types that may include transactional elements.<br><br>class TShow a where<br>
&nbsp;&nbsp; tshow :: a -&gt; IO String<br>
<br>
instance Show (TVar a) where<br>
&nbsp;&nbsp; show = &quot;%&quot;<br>
<br>
instance (Show a) =&gt; TShow a where<br>
&nbsp;&nbsp; tshow a = return $ show a<br>
<br>
instance (Show a) =&gt; TShow (TVar a) where<br>
&nbsp;&nbsp; tshow ta = do<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a &lt;- readTVar ta<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $ show a<br>
<br>Having created a new class is it possible to do some magic so that it can be put it into a deriving clause?<br><br>data Type = Type<br>&nbsp;&nbsp; { field1 :: Int<br>&nbsp;&nbsp; , field2 :: Int<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; deriving Show<br><br>data AnotherType = AnotherType<br>
&nbsp;&nbsp; { field3 :: Int<br>&nbsp;&nbsp; , field4 :: TVar Type<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; deriving <b>TShow</b><br><br>Thanks<br><br>-John<br><br>