From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 0607CBCAE for ; Mon, 18 Jul 2005 20:15:43 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j6IIFg4o017683 for ; Mon, 18 Jul 2005 20:15:42 +0200 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 UAA02037 for ; Mon, 18 Jul 2005 20:15:42 +0200 (MET DST) Received: from sccrmhc14.comcast.net (sccrmhc14.comcast.net [204.127.202.59]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j6IIFfHH017680 for ; Mon, 18 Jul 2005 20:15:41 +0200 Received: from [192.168.1.4] (c-24-10-253-157.hsd1.ut.comcast.net[24.10.253.157]) by comcast.net (sccrmhc14) with ESMTP id <2005071818153401400mfr5he>; Mon, 18 Jul 2005 18:15:40 +0000 Message-ID: <42DBF1C6.7080005@cs.utah.edu> Date: Mon, 18 Jul 2005 12:15:34 -0600 From: Robert Morelli User-Agent: Mozilla Thunderbird 1.0 (X11/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alex Baretta Cc: Ocaml Subject: Re: [Caml-list] (Mostly) Functional Design? References: <9cc3782b05071411004b27b6a4@mail.gmail.com> <42DB6161.4030507@cs.utah.edu> <42DB74DC.8030201@barettadeit.com> In-Reply-To: <42DB74DC.8030201@barettadeit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 42DBF1CE.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 42DBF1CD.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; morelli:01 morelli:01 caml-list:01 baretta:01 ocaml's:01 ocaml:01 ocaml:01 coherence:01 haskell:01 haskell:01 inference:01 ml's:01 inference:01 uncommon:01 algebra:01 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.2 X-Spam-Level: Alex Baretta wrote: > Your points are very simply wrong. Functional design addresses the same > large-scale design problems that OO tries to address, and, in fact, > given cognitive compatibility with the mind of the developere, it offers > a productivity at least an order of magnitude greater on very large > scale projects (over 100klocs) where the dominant cost factor is code > maintenance. Ocaml's functional paradigm greatly stresses a priori With all due respect, claims of order of magnitude productivity gains, that OCaml is a far better language than Java, etc. are exactly the kind of advocacy that I think is counterproductive. Most programmers would regard such dramatic statements as implausible, if not preposterous. > correctness via static type-checking, which we take advantage of to > achieve static verification of the Embedded SQL queries in our FreerP > suite of business applications. It is only thanks to the rich type > system in Ocaml that we are able to maintain coherence between a > database schema counting hundreds of relations and hundreds of Xcaml > server pages containing at least as many embedded SQL queries. Java > simply would not scale. The use of type checking is a point where the FP community has not reached consensus, as there are widely divergent views from the Scheme community and the ML and Haskell communities. Even between ML and Haskell, there are significant differences in the treatment of imperative features, type inference, objects and type classes, etc. These differences, it seems to me, are more fundamental than anything you find in the OO world, even the difference between, say, Java and Smalltalk. Moreover, ML's traditional emphasis on type inference, among other things, puts demands and limitations on the type system. Is type inference worth it? Is there a consensus? In fact, most of the features that lie above the level of lambda calculus and syntactic sugar, including the type system, of FP langaugaes like OCaml seem more or less arbitrary to me. Personally, I see the OCaml type system as relatively weak. I'm intrigued by very powerful features like dependent types, and I think they are dismissed too quickly by the mainstream of the FP community. But that's just my view. There's no consensus. In general, I believe that OCaml and its approach to static typing are best suited to simple domains, like language tools and formal methods. These are characterized by dealing with objects which can be completely characterized by simple universal properties. This fits well with the category theoretic foundation of the language. But there are relatively few areas where you have such luxury, and even when it's possible, finding the perfect characterization often requires rare intellectual gifts. I am not familiar with your FreerP technology and its use of Xcaml, but I will not dispute your claim of great success. It just seems likely to me that you've taken advantage of uncommon insight to cast your problems into a new sort of niche application. Relational algebra is after all not so far from category theory. Perhaps you've found an approach that could be used in many more applications to business. If so, I wish you success.