<?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="2009/10/7d3be716f3343f93c3c99f20ba3ddb6e"
  from="blue storm &lt;bluestorm.dylc@g...&gt;"
  author="blue storm"
  date="2009-10-23T17:51:09"
  subject="Re: [Caml-list] forbidden construct as right hand side of &quot;let rec&quot;"
  prev="2009/10/5b7e1adc784c98522967086aecba7d6c"
  next="2009/10/dd2f31ff751f8cc85c64a3d518f82592"
  prev-in-thread="2009/10/39062037ea7b698ed4d0e8eac5722e3f"
  prev-thread="2009/10/61b3aa5e2d0ffb16d5dd3dca5a2afd9a"
  next-thread="2009/10/3bcd2f16c7ea93d30f4c2afe13184103"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="Re: [Caml-list] forbidden construct as right hand side of &quot;let rec&quot;">
<msg 
  url="2009/10/7ee1373a402f5409b88f6f1276dca2cd"
  from="Damien Guichard &lt;alphablock@o...&gt;"
  author="Damien Guichard"
  date="2009-10-23T15:39:23"
  subject="Re: [Caml-list] forbidden construct as right hand side of &quot;let rec&quot;">
<msg 
  url="2009/10/39062037ea7b698ed4d0e8eac5722e3f"
  from="Marc de Falco &lt;marc.defalco@g...&gt;"
  author="Marc de Falco"
  date="2009-10-23T16:15:03"
  subject="Re: [Caml-list] forbidden construct as right hand side of &quot;let rec&quot;">
<msg 
  url="2009/10/7d3be716f3343f93c3c99f20ba3ddb6e"
  from="blue storm &lt;bluestorm.dylc@g...&gt;"
  author="blue storm"
  date="2009-10-23T17:51:09"
  subject="Re: [Caml-list] forbidden construct as right hand side of &quot;let rec&quot;">
</msg>
</msg>
</msg>
</thread>

<contents>
On Fri, Oct 23, 2009 at 6:14 PM, Marc de Falco &lt;marc.defalco@gmail.com&gt; wrote:
&gt; I don't know the exact rule, but I guess that on the right-hand side of a
&gt; let rec defining a ground value named foo you can only write a term which
&gt; evaluates to a finite ground term on the currently defined variables + foo.
&gt; That is to say something that evaluates to a finite tree of constructors
&gt; with
&gt; constants or defined variables as leaves.
&gt; Maybe someone more knowledgeable could state the exact rule.

You can find this in the documentation :
http://caml.inria.fr/pub/docs/manual-ocaml/manual021.html#toc70

&gt; P.S. : the code using Obj is far from a solution as it modifies the existing
&gt; structure
&gt; of the list to add cycling and thus, breaks persistency.

Well, you can easily copy the list before using Obj, wich preserves persistency.

Here is a relevant discussion on the list :
http://groups.google.com/group/fa.caml/browse_frm/thread/9aa32076b03dd6ff?pli=1

You can also look at Matias Giovannini's articles on his blogs (wich
are recommended reading anyway) :
http://alaska-kamtchatka.blogspot.com/2007/11/unsafe-clasp.html
http://alaska-kamtchatka.blogspot.com/2007/11/more-elegant-necklace.html

</contents>

</message>

