From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr 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 AF3D8D460 for ; Fri, 4 Nov 2005 17:06:55 +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 jA4G6tZU001961 for ; Fri, 4 Nov 2005 17:06:55 +0100 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 RAA03306 for ; Fri, 4 Nov 2005 17:06:54 +0100 (MET) Received: from vaxjo.synopsys.com (vaxjo.synopsys.com [198.182.60.75]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id jA4G6rUh001954 for ; Fri, 4 Nov 2005 17:06:54 +0100 Received: from maiden.synopsys.com (maiden.synopsys.com [146.225.100.170]) by vaxjo.synopsys.com (Postfix) with ESMTP id 80688DB45; Fri, 4 Nov 2005 08:06:52 -0800 (PST) Received: from US01WEBRH1.internal.synopsys.com (localhost [127.0.0.1]) by maiden.synopsys.com (8.9.1/8.9.1) with ESMTP id IAA21973; Fri, 4 Nov 2005 08:06:52 -0800 (PST) Received: from US01Natrium.internal.synopsys.com ([10.9.67.42]) by US01WEBRH1.internal.synopsys.com with Microsoft SMTPSVC(6.0.3790.0); Fri, 4 Nov 2005 08:06:51 -0800 Received: from ca05osmium.internal.synopsys.com ([10.44.8.226]) by US01Natrium.internal.synopsys.com with Microsoft SMTPSVC(5.0.2195.5329); Fri, 4 Nov 2005 08:06:51 -0800 Received: from synopsys.com ([10.44.9.157]) by ca05osmium.internal.synopsys.com with Microsoft SMTPSVC(5.0.2195.5329); Fri, 4 Nov 2005 11:06:50 -0500 Message-ID: <436B871A.40906@synopsys.com> Date: Fri, 04 Nov 2005 11:06:50 -0500 From: Alan Falloon User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en MIME-Version: 1.0 To: David Teller Cc: caml-list@inria.fr Subject: Re: [Caml-list] what is high-level References: <200511031726.59561.jon@ffconsultancy.com> <1131045878.4327.94.camel@localhost.localdomain> <1131071464.10871.44.camel@rosella> <200511041443.15429.fmonnier@linux-nantes.fr.eu.org> <1131118091.6558.7.camel@titania> In-Reply-To: <1131118091.6558.7.camel@titania> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 04 Nov 2005 16:06:50.0210 (UTC) FILETIME=[C3BB5420:01C5E159] X-Miltered: at concorde with ID 436B871F.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at concorde with ID 436B871D.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 high-level:01 ocaml:01 haskell:01 run-time:01 untyped:01 ocaml:01 idioms:01 duck:98 duck:98 walks:98 ...:98 wrote:01 compile:01 typing:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 David Teller wrote: >Still, in OCaml/Haskell/ML, you do need some understanding of the type >system, which is typically not necessary in other programming languages. > > To write software you need to have some notion of types. By that I mean that you need an understanding of what values a certain operation can produce. In run-time type checked languages (and in untyped lagnuages), its up to the programmer to keep the type system in thier head. This makes the type system fairly flexible and lets them use whatever concepts make sense to them, but its still a type system. This is useful for novices, but tends to scale poorly. It also means that even users who invent a sophisticaed type system for thier project are unlikely to share concepts with other advanced users. In compile time typed languages, everyone has to agree on the type system. So, in modern languages, you get a push toward more sophisticated type systems than your average beginner can cope with, and with different concepts than an advanced user from dynamic languages would understand. I think the biggest barrier is the language. It took me forever to figure out what a 'row variable' was. As far as I can tell its how you do "duck typing" (if it quacks like a duck and walks like a duck...) in a static language. Row variable is a good term when you are inventing the system or writing a paper on it, but when introducing it to users who already know Python saying "duck typing" will make it clear in seconds. What we really need is a concept map from the popular languages (C, C++, Java, Python, Perl) to OCaml. Show common idioms in those languages and how they look in OCaml, and if there is a better way in OCaml then show that too. It might not make a good Wikipedia article, but it is the sort of project well suited to a Wiki. Is there an OCaml Wiki? -- Alan Falloon