From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 74B05BB81 for ; Wed, 8 Dec 2004 13:39:46 +0100 (CET) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id iB8Cdkk2005981 for ; Wed, 8 Dec 2004 13:39:46 +0100 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id NAA04770 for ; Wed, 8 Dec 2004 13:39:45 +0100 (MET) Received: from [128.93.11.101] (buzet.inria.fr [128.93.11.101]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id iB8CdjXx004452 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 8 Dec 2004 13:39:45 +0100 Message-ID: <41B6F610.8000507@inria.fr> Date: Wed, 08 Dec 2004 13:39:44 +0100 From: Alain Frisch User-Agent: Mozilla Thunderbird 0.9 (X11/20041119) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Damien Doligez Cc: caml users Subject: Re: [Caml-list] Type constraints References: <20041206195527.GA32094@draco.skynet> <41B557D4.2000306@inria.fr> <076FEF06-4856-11D9-8195-000D9345235C@inria.fr> <41B5C4C8.9040701@ps.uni-sb.de> <41B5F1B2.3000503@inria.fr> <9296F5C2-4893-11D9-8195-000D9345235C@inria.fr> <41B62407.4020102@inria.fr> <74A16EF6-4907-11D9-8195-000D9345235C@inria.fr> In-Reply-To: <74A16EF6-4907-11D9-8195-000D9345235C@inria.fr> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 41B6F612.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 41B6F611.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; frisch:01 frisch:01 caml-list:01 damien:01 wrote:01 hmmm:01 nonexpansive:01 texp:01 letmodule:01 nonexpansive:01 struct:01 ...:98 ...:98 doligez:01 constraints:01 X-Spam-Checker-Version: SpamAssassin 3.0.0 (2004-09-13) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.0 X-Spam-Level: Damien Doligez wrote: > Hmmm... Now I don't know whether it's safe or not, and I don't know > whether someone checked its safety before excluding it from the value > restriction code... With this extra line added to is_nonexpansive: | Texp_letmodule (_,_,e) -> is_nonexpansive e we get: # let module M = struct let x = ref [] end in M.x;; - : 'a list ref = {contents = []} The non-generalizable status has been forgotten. What I'm not sure is whether this is only an artefact of the internal representation of levels to control generalization, or whether there are some deeper issues. -- Alain