From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id VAA12313 for caml-red; Sun, 14 Jan 2001 21:20:20 +0100 (MET) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA19418 for ; Fri, 12 Jan 2001 19:01:53 +0100 (MET) Received: from staff.gtmd.com (adsl-63-195-80-23.dsl.snfc21.pacbell.net [63.195.80.23]) by concorde.inria.fr (8.11.1/8.10.0) with ESMTP id f0CI1q511373 for ; Fri, 12 Jan 2001 19:01:52 +0100 (MET) Received: from aria.chasm.org (aria [192.168.0.3]) by staff.gtmd.com (8.9.3/8.9.3) with ESMTP id JAA28366 for ; Fri, 12 Jan 2001 09:58:55 -0800 (PST) (envelope-from martin@chasm.org) Message-Id: <5.0.0.25.0.20010112095330.00a39eb0@chasm.org> X-Sender: martin@chasm.org X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Fri, 12 Jan 2001 10:02:46 -0800 To: caml-list@inria.fr From: Charles Martin Subject: live variables Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Sender: weis@pauillac.inria.fr I would like to follow up to the mailing list a series of posts on comp.lang.functional. Jerome Vouillon explained that the native code compiler compiles let rec foldl f q = function | [] -> q | x :: xx -> foldl f (f q x) xx as if it were written let rec foldl f q = function | [] -> q | l -> let x = List.hd l in let r = f q x in let xx = List.tl l in foldl f r xx As Daniel Wang points out, this does not preserve the basic liveness properties of the original program. As he asked on the newsgroup, is there a deep reason for this, or is this just a bug that has yet to be fixed? Charles