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.1 required=5.0 tests=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 08573BBAF for ; Sun, 14 Dec 2008 10:10:47 +0100 (CET) X-IronPort-AV: E=Sophos;i="4.36,218,1228086000"; d="scan'208";a="32623076" Received: from discorde.inria.fr ([192.93.2.38]) by mail4-smtp-sop.national.inria.fr with ESMTP; 14 Dec 2008 10:10:46 +0100 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id mBE9Ajo6008579 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Sun, 14 Dec 2008 10:10:46 +0100 X-IronPort-AV: E=Sophos;i="4.36,218,1228086000"; d="scan'208";a="21238404" Received: from yquem.inria.fr ([128.93.8.37]) by mail1-relais-roc.national.inria.fr with ESMTP; 14 Dec 2008 10:10:45 +0100 Received: by yquem.inria.fr (Postfix, from userid 18965) id CCD26BBAF; Sun, 14 Dec 2008 10:10:45 +0100 (CET) Date: Sun, 14 Dec 2008 10:10:45 +0100 From: Francois Pottier To: Edgar Friendly Cc: Christopher L Conway , caml-list@inria.fr Subject: Re: [Caml-list] Immutable cyclic data structures via a Message-ID: <20081214091045.GA2341@yquem.inria.fr> Reply-To: Francois.Pottier@inria.fr References: <494465C2.2000807@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <494465C2.2000807@gmail.com> User-Agent: Mutt/1.5.9i X-Miltered: at discorde with ID 4944CD95.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; mutable:01 mut:01 compiler:01 mutable:01 ocaml:01 compiler:01 edgar:98 wrote:01 cristal:01 caml-list:01 pottier:01 pottier:01 immutable:01 cyclic:01 immutable:01 On Sat, Dec 13, 2008 at 07:47:46PM -0600, Edgar Friendly wrote: > ExtLib (and thus batteries) uses your unmute (called [inj]) for > converting a mutable list into the normal immutable list. The definition: > > external inj : 'a mut_list -> 'a list = "%identity" > > As always, be *very* careful when using this kind of type system voodoo, > but it can work under certain circumstances. This is, in principle, unsound. The compiler could (if it were more agressive) assume that a value of type 'a list is unaffected by a function call, whereas, if the list is really mutable, it could actually be written to by the call. With the current ocaml compiler, this might be okay, but I'd be wary of building this kind of code into a library. Best regards, -- François Pottier Francois.Pottier@inria.fr http://cristal.inria.fr/~fpottier/