Hello,<div><br></div><div>Would it be possible to get a Data instance for Data.Text.Text? This would allow us to create a Serialize instance of Text for use with happstack -- which would be extremely useful.</div><div><br>
</div><div>We (at seereason) are currently using this patch:</div><div><br></div><div><a href="http://src.seereason.com/haskell-text-debian/debian/patches/add_Data_instance.patch">http://src.seereason.com/haskell-text-debian/debian/patches/add_Data_instance.patch</a></div>
<div><br></div><div>which basically adds:</div><div><br></div><div><div>+textType = mkStringType &quot;Data.Text&quot;</div><div>+</div><div>+instance Data Text where</div><div>+   toConstr x = mkStringConstr textType (unpack x)</div>
<div>+   gunfold _k z c = case constrRep c of</div><div>+                     (CharConstr x) -&gt; z (pack [x])</div><div>+                     _ -&gt; error &quot;gunfold for Data.Text&quot;</div><div>+   dataTypeOf _ = textType</div>
<div>+</div><div><br></div><div>This particular implementation avoids exposing the internals of the Data.Text type by casting it to a String in toConstr and gunfold. That is similar to how Data is implemented for some numeric types. However, the space usage of casting in Float to a Double is far less than casting a Text to a String, so maybe that is not a good idea?</div>
<div><br></div><div>Alternatively, Data.ByteString just does &#39;deriving Data&#39;. However, bytestring also exports Data.ByteString.Internal, wheres Data.Text.Internal is not exported.</div><div><br></div><div>Any thoughts? I would like to get this handled upstream so that all happstack users can benefit from it.</div>
<div><br></div><div>- jeremy</div></div>