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.2 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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 18CFDBC69 for ; Fri, 16 Nov 2007 18:47:23 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAANtmPUdCbwQZnmdsb2JhbACPDQEBAQEHBAYp X-IronPort-AV: E=Sophos;i="4.21,427,1188770400"; d="scan'208";a="4338119" Received: from out1.smtp.messagingengine.com ([66.111.4.25]) by mail2-smtp-roc.national.inria.fr with ESMTP; 16 Nov 2007 18:47:22 +0100 Received: from compute2.internal (compute2.internal [10.202.2.42]) by out1.messagingengine.com (Postfix) with ESMTP id 043E247553; Fri, 16 Nov 2007 12:47:22 -0500 (EST) Received: from heartbeat2.messagingengine.com ([10.202.2.161]) by compute2.internal (MEProxy); Fri, 16 Nov 2007 12:47:22 -0500 X-Sasl-enc: xrhL3KIZN0lAan8PLmPsr0Hk6lUK9jE0d4uJZ+q9h6VE 1195235241 Received: from [192.168.1.11] (unknown [90.46.0.137]) by mail.messagingengine.com (Postfix) with ESMTP id 308E52A691; Fri, 16 Nov 2007 12:47:21 -0500 (EST) Date: Fri, 16 Nov 2007 18:47:15 +0100 (CET) From: Martin Jambon X-X-Sender: martin@martin.ec.wink.com To: Edgar Friendly Cc: Alain Frisch , caml-list Subject: Re: [Caml-list] Compiler feature - useful or not? In-Reply-To: <473DD301.90307@gmail.com> Message-ID: References: <473A363F.2080301@gmail.com> <891bd3390711131608g48b584a4n6b0ccab95d7de3f3@mail.gmail.com> <20071114075827.GA24058@yquem.inria.fr> <473AEC04.3030303@frisch.fr> <20071114143524.GA4423@yquem.inria.fr> <473B249D.9040703@frisch.fr> <20071114184352.GB28796@yquem.inria.fr> <473BE750.9060301@frisch.fr> <20071115132649.GB15754@yquem.inria.fr> <891bd3390711151630x238b8eddod5b7462d0fa1c735@mail.gmail.com> <473D61A3.9090708@frisch.fr> <473DD301.90307@gmail.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Spam: no; 0.00; ens-lyon:01 compiler:01 ocaml:01 polymorphism:01 2007,:98 edgar:98 wrote:01 wrote:01 caml-list:01 int:01 int:01 jambon:01 jambon:01 poly:02 define:02 On Fri, 16 Nov 2007, Edgar Friendly wrote: > Martin Jambon wrote: >> Please don't take my suggestions too seriously, but it could be cool to >> define types such as: >> >> type bit = [ 0 | 1 ] >> >> >> Martin > > How about this: > > type permission = > User_read -> 0o400 | User_write -> 0o200 | User_execute -> 0o100 > | Group_read -> 0o40 | Group_write -> 0o20 | Group_execute -> 0o10 > | World_read -> 0o4 | World_write -> 0o2 | World_execute -> 0o1 > > let combine (pl: permission list) = > List.fold_left (fun a b -> a lor (b :> int)) 0 pl I'm afraid of losing the following basic feature ("your first OCaml program"): # 0;; - : int and instead get: # 0;; - : [< int > 0 ] Perhaps polymorphism should not be the default, i.e. we would have to use a special keyword: # poly 0;; - : [< int > 0 ] # 0;; - : int Martin -- http://wink.com/profile/mjambon http://martin.jambon.free.fr