As a side note i&#39;d like to point out that introspectData has a problem with constructors containing Strings because show (x::String) /= x:<br><br>data Foo = Foo { bar :: String } deriving (Typeable,Data)<br><br>introspectData (Foo &quot;quux&quot;) --&gt; [(&quot;bar&quot;,&quot;\&quot;quux\&quot;&quot;)]
<br><br>Those extras \&quot; don&#39;t look very nice in the xml.. (the output of introspectData is also wrong in the article&#39;s example )<br>you should probably use a modified gshow:<br><br>gshow&#39; :: Data a =&gt; a -&gt; String
<br>gshow&#39; x = fromMaybe (gshow x) (cast x)<br><br>which is id for Strings.<br><br><br><br>