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 7E6CCBC88 for ; Thu, 3 Feb 2005 23:33:17 +0100 (CET) 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 j13MXGAT010282 for ; Thu, 3 Feb 2005 23:33:17 +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 XAA27097 for ; Thu, 3 Feb 2005 23:33:16 +0100 (MET) Received: from trdlnk.com (postman.trdlnk.com [208.252.163.7]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j13MXFZa013623 for ; Thu, 3 Feb 2005 23:33:16 +0100 Received: from brazil.chicago.trdlnk.com (brazil.chicago.trdlnk.com [10.10.2.164]) by trdlnk.com (8.12.10+Sun/8.12.10) with ESMTP id j13MXEWq002450; Thu, 3 Feb 2005 16:33:14 -0600 (CST) Received: from [10.137.1.97] (mailhost [10.10.2.153]) by brazil.chicago.trdlnk.com (8.12.10+Sun/8.12.10) with ESMTP id j13MXEPs021131; Thu, 3 Feb 2005 16:33:14 -0600 (CST) Message-ID: <4202A6AA.3030807@trdlnk.com> Date: Thu, 03 Feb 2005 16:33:14 -0600 From: josh User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Thomas Fischbacher Cc: =?ISO-8859-1?Q?Fr=E9d=E9ric_Gava?= , caml-list@inria.fr Subject: Re: [Caml-list] Estimating the size of the ocaml community References: <891bd33905020213315a2ebb18@mail.gmail.com> <8008871f05020213362d21ba87@mail.gmail.com> <000f01c50971$baad4840$0100a8c0@mshome.net> <1107403128.32586.223.camel@pelican.wigram> <20050203173556.4acec1c5.ocaml-erikd@mega-nerd.com> <009a01c50a1e$f6c92080$0100a8c0@mshome.net> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 4202A6AC.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at concorde with ID 4202A6AB.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 ocaml:01 wrote:01 ocaml:01 syntax:01 syntax:01 recursion:01 monads:01 minor:01 printf:01 printf:01 ocaml's:01 sml:01 haskell:01 rounding: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: Thomas Fischbacher wrote: > There are quite a few things which I don't like at all about ocaml: >(1) I by far do not have the flexibility in extending the language with >own syntax which I have in Lisp. > > But you do with camlp4. >(2) Speaking of syntax, there's a lot of unnecessary cruft in virtually >any language besides LISP (or rather, Scheme). > > I'm going to leave this alone, Lisp derived languages all have the Parenthesis problem that makes them "ugly" as defined by a lot of people. >(3) The type system is annoying. People claim it helps catching errors, >but my impression is it only catches those which I would never make >anyway. On the other hand, I cannot just have e.g. a function like >POSITION-IF that returns a number or nil. (Either one has to work with >exceptions, or wrap things up using the Maybe monad. Exception techniques >may interfere badly with tail recursion in some cases.) > > My response is contrived, but does not require monads or exceptions and does basically what you're asking for ( I think): type position = Position of int | None;; let position-if pos = match pos with Position x -> if (x > 10) then Position x else None | None -> None;; The type system is a tool that has many uses, it has a side effect of catching errors. The above type 'position' can be used by anyone and the developer would then know the range of possible values and code accordingly. >(4) There are a few other minor issues, such as a lack of >multiple-value-bind, which I personally find slightly annoying, but >not essential. > > You say yourself this is not essential. >(5) It does not behave as expected wrt module interfaces, as these include >md5 sums over source. > > I'm not sure your point on this one. >(6) I cannot easily COMPILE a function to fast machine code from the REPL. > > This is true. >(7) I cannot easily (format t "DEBUG: compsite-thingy-bla-now-is ~A~%" bla). > > I don't see how this and Printf are substantially different (except that Printf is type safe), could you elaborate? >(8) There are quite some instances where Ocaml's syntax is >counter-intuitive to the extent of becoming a source of ugly mistakes, >due to interference with conventions people are used to from other >languages. I do not talk about (p,q) as x vs. x as (p,q) (or x@(p,q)) - >as everyone else (e.g. SML, Haskell) does it, but rather about issues >like for x=0 to 3 counting 0,1,2,3, or "\010" meaning "\x0a" instead of >"\x08", and such. > > This is an idiomatic issue. I find presence of gender specific suffixes in French to be a problem for me because I'm used to the conventions of English. That does not mean French is wrong, it means I need to learn French better. >(9) It really annoys having +, +., and +/. Furthermore, it seems a bit >inconsistent, as on the other hand, we have e.g. < and not > I agree with you here. This is an issue, but I don't know that it is a major problem. Also, sometimes I do find that it helps to think about the effects of working with floats vs. ints especially wrt rounding problems and what not. >I know quite well that some people will consider some of these points >actually as "good" features, and think the "problems" I face can be traced >back to me being quite misguided about programming in general. For sure, I >should not expect Ocaml to be LISP, as it isn't. But I don't do that. :-) > >It's only that I experienced a few things in LISP as quite nice, and am a >little bit annoyed when I cannot use them. But only a little bit. ;-) >Still, Ocaml also has a few niceties that are missing in LISP. After all, >it is still among my favourite languages. C++, Java, JavaScript certainly >are not. > > > I think you've brought up your issues very succinctly and clearly. I don't agree with all of them, but you have put forward issues that should be addressed (even if it is with documentation rather than language changes). Thank you. -jbs