Hi there,<br><br>There&#39;s no difference. See <a href="http://hackage.haskell.org/packages/archive/base/4.0.0.0/doc/html/src/Data-Data.html#line-1034">http://hackage.haskell.org/packages/archive/base/4.0.0.0/doc/html/src/Data-Data.html#line-1034</a><br>
<br>You can also see many other instances there.<br><br><br>Cheers,<br>Pedro<br><br><div class="gmail_quote">On Sun, Jan 18, 2009 at 10:50, haihualin <span dir="ltr">&lt;<a href="mailto:haihualin@163.com">haihualin@163.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi,<br>
<br>
Does some one know how to define gunfold on recursive data struction like List?<br>
<br>
The ghc doc only give the example for non-recursive data like below.<br>
<br>
&nbsp;data T a b = C1 a b | C2 deriving (Typeable, Data)<br>
<br>
GHC will generate an instance that is equivalent to<br>
<br>
&nbsp;instance (Data a, Data b) =&gt; Data (T a b) where<br>
 &nbsp; &nbsp; gfoldl k z (C1 a b) = z C1 `k` a `k` b<br>
 &nbsp; &nbsp; gfoldl k z C2 &nbsp; &nbsp; &nbsp; = z C2<br>
<br>
 &nbsp; &nbsp; gunfold k z c = case constrIndex c of<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 -&gt; k (k (z C1))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 -&gt; z C2<br>
<br>
 &nbsp; &nbsp; toConstr (C1 _ _) = con_C1<br>
 &nbsp; &nbsp; toConstr C2 &nbsp; &nbsp; &nbsp; = con_C2<br>
<br>
 &nbsp; &nbsp; dataTypeOf _ = ty_T<br>
<br>
&nbsp;con_C1 = mkConstr ty_T &quot;C1&quot; [] Prefix<br>
&nbsp;con_C2 = mkConstr ty_T &quot;C2&quot; [] Prefix<br>
&nbsp;ty_T &nbsp; = mkDataType &quot;Module.T&quot; [con_C1, con_C2]<br>
<br>
<br>
<br>
_______________________________________________<br>
Haskell mailing list<br>
<a href="mailto:Haskell@haskell.org">Haskell@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell" target="_blank">http://www.haskell.org/mailman/listinfo/haskell</a><br>
</blockquote></div><br>