<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2002/07/b44d83525a337150d2d807ee742cdfac"
  from="John Max Skaller &lt;skaller@o...&gt;"
  author="John Max Skaller"
  date="2002-07-27T17:32:25"
  subject="[Caml-list] equi-recursive Fold isomorphism"
  prev="2002/07/c2850575bbf44763e83d5c50f6d5159b"
  next="2002/07/4f9bb8f68563eae0df616c5312061cd5"
  next-in-thread="2002/07/4f9bb8f68563eae0df616c5312061cd5"
  prev-thread="2002/07/31df5f956e055f23defa7f42b31cd382"
  next-thread="2002/07/0cb29bb0ea374d69ebccf8accd5a096d"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] equi-recursive Fold isomorphism">
<msg 
  url="2002/07/b44d83525a337150d2d807ee742cdfac"
  from="John Max Skaller &lt;skaller@o...&gt;"
  author="John Max Skaller"
  date="2002-07-27T17:32:25"
  subject="[Caml-list] equi-recursive Fold isomorphism">
<msg 
  url="2002/07/4f9bb8f68563eae0df616c5312061cd5"
  from="Alain Frisch &lt;frisch@c...&gt;"
  author="Alain Frisch"
  date="2002-07-27T19:44:01"
  subject="Re: [Caml-list] equi-recursive Fold isomorphism">
<msg 
  url="2002/08/53ed9625fb1f595602c7030ddf5acc8e"
  from="John Max Skaller &lt;skaller@o...&gt;"
  author="John Max Skaller"
  date="2002-08-01T14:49:45"
  subject="[Caml-list] Question about distribution">
<msg 
  url="2002/08/214fa7d010269acc80ff246b88085cea"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2002-08-01T15:48:47"
  subject="Re: [Caml-list] Question about distribution">
</msg>
<msg 
  url="2002/08/3120d6d86c63690a934a6e153bbab64f"
  from="Daniel de Rauglaudre &lt;daniel.de_rauglaudre@i...&gt;"
  author="Daniel de Rauglaudre"
  date="2002-08-03T17:35:36"
  subject="Re: [Caml-list] Question about distribution">
</msg>
</msg>
<msg 
  url="2002/07/d6cc835c30bdf5961ac017a3513d4c19"
  from="John Max Skaller &lt;skaller@o...&gt;"
  author="John Max Skaller"
  date="2002-07-28T01:46:42"
  subject="Re: [Caml-list] equi-recursive Fold isomorphism">
<msg 
  url="2002/07/0b573ce0f42e95b4d4fbedbd027299d1"
  from="Alain Frisch &lt;frisch@c...&gt;"
  author="Alain Frisch"
  date="2002-07-28T20:15:02"
  subject="Re: [Caml-list] equi-recursive Fold isomorphism">
</msg>
</msg>
</msg>
</msg>
</thread>

<contents>
Given a recursive type

    Fix 'a .  T  (where 'a occurs in T)

we can unfold the type to T' = T['a -&gt; Fix 'a.T],
we define unfold t = t, if t doesn't start with a fixpoint operator.

Any ideas how to best implement fold, the inverse isomorphism?

Brute force method: examine every subterm, and compare with
the main term using equi-recusive comparison .. this seems quadratic
in the number of nodes .. smarter method: only compare arguments
of fixpoint binders .. can we do any better? For example,
replace the subterm in the main term with a fixpoint variable, and compare
the subterm with the modified main term (directly, ie. using ocaml 
'compare')
[I don't know how to do this 'replacement' efficiently though]

-- 
John Max Skaller, mailto:skaller@ozemail.com.au
snail:10/1 Toxteth Rd, Glebe, NSW 2037, Australia.
voice:61-2-9660-0850



-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners

</contents>

</message>

