From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=disabled version=3.1.3 Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 0BE11BC0C for ; Tue, 12 Dec 2006 00:06:50 +0100 (CET) Received: from web27012.mail.ukl.yahoo.com (web27012.mail.ukl.yahoo.com [217.146.177.12]) by discorde.inria.fr (8.13.6/8.13.6) with SMTP id kBBN6nSW018241 for ; Tue, 12 Dec 2006 00:06:49 +0100 Received: (qmail 87957 invoked by uid 60001); 11 Dec 2006 23:06:49 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.fr; h=Message-ID:Received:Date:From:Subject:To:MIME-Version:Content-Type; b=dC9n0Mkon9BHiXLUbC45aBwmxWNXa13DKVFUwUg/P64bOwA/qAdf6J1Sx4CjK/MdN10ffxjhWZ3FBGR9X3BK5cbk0WlVrA/R7KzXMx4FwqsNktVqOPI+xeeEiweGCjAYgCf+VWCknOg0ujPPmFRpjKzA2wUd6cerj2HtHYkM1gQ= ; Message-ID: <20061211230649.87955.qmail@web27012.mail.ukl.yahoo.com> Received: from [82.245.142.171] by web27012.mail.ukl.yahoo.com via HTTP; Mon, 11 Dec 2006 23:06:49 GMT Date: Mon, 11 Dec 2006 23:06:49 +0000 (GMT) From: Matthieu Wipliez Subject: Re : [Caml-list] Hashtbl.find_all Stack overflow To: caml-list@yquem.inria.fr MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-689558836-1165878409=:87426" X-Miltered: at discorde with ID 457DE489.001 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; matthieu:01 hashtbl:01 stack:01 pervasives:01 matthieu:01 hashtbl:01 stack:01 vars:01 tpl:01 iter:01 tpl:01 vars:01 iter:01 beginner's:01 ocaml:01 --0-689558836-1165878409=:87426 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hello,=0A=0Ahave you tried using the functorial version with a suitable com= pare function (ie not Pervasives.compare) ?=0AI don't know about the type o= f the keys, so it is just a guess...=0A=0AHope that helps,=0AMatthieu=0A=0A= ----- Message d'origine ----=0ADe : "jhsu1@email.sjsu.edu" =0A=C0 : caml-list@yquem.inria.fr=0AEnvoy=E9 le : Lundi, 11 D=E9cembr= e 2006, 19h18mn 15s=0AObjet : [Caml-list] Hashtbl.find_all Stack overflow= =0A=0A=0AI get a stack overflow with the following=0A=0A
=0Alet var_loo=
kup =3D Hashtbl.create 997;;=0A=0A(* ... *)=0A=0Alet keys h =3D Hashtbl.fol=
d (fun key data accu -> if not (List.mem key accu) then=0Akey :: accu else =
accu) h [] in=0A    let files =3D keys var_lookup in=0A        let helper f=
ile =3D (let vars =3D Hashtbl.find_all var_lookup file in=0A        let run=
_tpl var =3D print_string var in=0A        List.iter run_tpl vars) in=0A   =
     List.iter helper files;=0A
=0A=0AOnly when Hashtbl.find_all is ex= ecuted enough times.=0A=0A_______________________________________________= =0ACaml-list mailing list. Subscription management:=0Ahttp://yquem.inria.fr= /cgi-bin/mailman/listinfo/caml-list=0AArchives: http://caml.inria.fr=0ABegi= nner's list: http://groups.yahoo.com/group/ocaml_beginners=0ABug reports: h= ttp://caml.inria.fr/bin/caml-bugs=0A=0A=0A=0A=0A=0A=0A=0A=09=0A=0A=09=0A=09= =09=0A_____________________________________________________________________= ______ =0AD=E9couvrez une nouvelle fa=E7on d'obtenir des r=E9ponses =E0 tou= tes vos questions ! =0AProfitez des connaissances, des opinions et des exp= =E9riences des internautes sur Yahoo! Questions/R=E9ponses =0Ahttp://fr.ans= wers.yahoo.com --0-689558836-1165878409=:87426 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable
Hello,

have you tried using the functorial version with a sui= table compare function (ie not Pervasives.compare) ?
I don't know about = the type of the keys, so it is just a guess...

Hope that helps,
M= atthieu

----- Message d'origine ----
De : "jhsu1@email.sj= su.edu" <jhsu1@email.sjsu.edu>
=C0 : caml-list@yquem.inria.fr
E= nvoy=E9 le : Lundi, 11 D=E9cembre 2006, 19h18mn 15s
Objet : [Caml-l= ist] Hashtbl.find_all Stack overflow


I get a stack overflow= with the following

<PRE>
let var_lookup =3D Hashtbl.create= 997;;

(* ... *)

let keys h =3D Hashtbl.fold (fun key data ac= cu -> if not (List.mem key accu) then
key :: accu else accu) h [] in
   &nbs= p;let files =3D keys var_lookup in
      &= nbsp; let helper file =3D (let vars =3D Hashtbl.find_all var_lookup fi= le in
        let run_tpl var = =3D print_string var in
        = List.iter run_tpl vars) in
       &nb= sp;List.iter helper files;
</PRE>

Only when Hashtbl.find_al= l is executed enough times.

________________________________________= _______
Caml-list mailing list. Subscription management:
= http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: <= a target=3D"_blank" href=3D"http://caml.inria.fr">http://caml.inria.fr<= br>Beginner's list: http://groups.yahoo= .com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs=


=0A=09=09
=0AD=E9couvrez= une nouvelle fa=E7on d'obtenir des r=E9ponses =E0 toutes vos questions ! = =0AProfitez des connaissances, des opinions et des exp=E9riences des intern= autes sur Yahoo! Questions/R=E9ponses. --0-689558836-1165878409=:87426--