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=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id 70F56BBC1 for ; Tue, 4 Mar 2008 00:24:36 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8CAOcWzEfUnw7Vhmdsb2JhbACCNI5CAQEBCAQGCQYTB5xV X-IronPort-AV: E=Sophos;i="4.25,440,1199660400"; d="scan'208";a="9848903" Received: from ptb-relay02.plus.net ([212.159.14.213]) by mail3-smtp-sop.national.inria.fr with ESMTP; 04 Mar 2008 00:24:36 +0100 Received: from [80.229.56.224] (helo=beast.local) by ptb-relay02.plus.net with esmtp (Exim) id 1JWK1L-0008DW-6d for caml-list@yquem.inria.fr; Mon, 03 Mar 2008 23:24:35 +0000 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] different records, same field name? Date: Mon, 3 Mar 2008 22:29:23 +0000 User-Agent: KMail/1.9.7 References: <47CC2D9F.6050109@starynkevitch.net> <200803031432.03002.ober.14@osu.edu> In-Reply-To: <200803031432.03002.ober.14@osu.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200803032229.24345.jon@ffconsultancy.com> X-Plusnet-Relay: c729006fa0fa4926f273cffd73411f31 X-Spam: no; 0.00; inference:01 ocaml:01 ocaml:01 inference:01 trade-offs:01 haskell:01 arises:01 annotations:01 annotations:01 ambiguities:01 frog:98 wrote:01 caml-list:01 confusing:02 idiomatic:02 On Monday 03 March 2008 19:32:02 Kuba Ober wrote: > I think that type inference in OCaml sometimes gets in the way of other > language features. I'd much rather see OCaml go in a direction where type > inference is performed on "as far as it can go" basis. Other languages already do that, of course, and it just brings a different set of trade-offs. OCaml is roughly the best you can get in this respect. Breaking decideability seems like a bad idea because you end up annotating all types and benefitting much less from type inference, as is idiomatic in Haskell and imposed in Scala. The alternative of flagging an error when an ambiguity arises is used by F# but it makes no attempt to search current definitions for structurally- compatible classes. Indeed, I already find it confusing and a little ugly to have to add type annotations as you develop because your final product often ends up with unnecessary annotations as later developments remove ambiguities. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e