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 88E0BBC88 for ; Thu, 3 Feb 2005 22:58:52 +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 j13Lwp8J006635 for ; Thu, 3 Feb 2005 22:58:52 +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 WAA25592 for ; Thu, 3 Feb 2005 22:58:51 +0100 (MET) Received: from smtpout.mac.com (smtpout.mac.com [17.250.248.83]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j13LwokP009144 for ; Thu, 3 Feb 2005 22:58:51 +0100 Received: from mac.com (smtpin08-en2 [10.13.10.153]) by smtpout.mac.com (8.12.6/MantshX 2.0) with ESMTP id j13Lwn9k007652; Thu, 3 Feb 2005 13:58:49 -0800 (PST) Received: from [192.168.1.100] (dsl081-080-123.lax1.dsl.speakeasy.net [64.81.80.123]) (authenticated bits=0) by mac.com (Xserve/smtpin08/MantshX 4.0) with ESMTP id j13LwlhO027565; Thu, 3 Feb 2005 13:58:48 -0800 (PST) In-Reply-To: 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> Mime-Version: 1.0 (Apple Message framework v619.2) Content-Type: text/plain; charset=US-ASCII; format=flowed Message-Id: <87d3baf87b21ac5a17a8d8782ac21cfa@mac.com> Content-Transfer-Encoding: 7bit Cc: caml-list@inria.fr, =?ISO-8859-1?Q?Fr=E9d=E9ric_Gava?= From: Paul Snively Subject: Re: [Caml-list] Estimating the size of the ocaml community Date: Thu, 3 Feb 2005 13:58:33 -0800 To: Thomas Fischbacher X-Pgp-Agent: GPGMail 1.0.2 X-Mailer: Apple Mail (2.619.2) X-Miltered: at nez-perce with ID 42029E9B.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at concorde with ID 42029E9A.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 ocaml:01 hash:01 wrote:01 syntax:01 imho:01 scheme's:01 syntax:01 expander:01 o'caml's:01 ast:01 graydon:01 compiler:01 ast:01 recursion: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: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Feb 3, 2005, at 1:16 PM, Thomas Fischbacher wrote: > (1) I by far do not have the flexibility in extending the language with > own syntax which I have in Lisp. > I have to respectfully disagree with this: IMHO, entirely too much is made of Lisp's macros (as distinct from Scheme's hygenic macros)! With camlp4, I have the ability to go from any concrete syntax I have an expander for to O'Caml's AST and back. This is used to good effect in Graydon Hoare's One Day Compiler presentation. > (2) Speaking of syntax, there's a lot of unnecessary cruft in virtually > any language besides LISP (or rather, Scheme). > Well, sure, given that in Lisp you're writing the AST by hand. :-) > (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.) > I guess I don't see the problem with "option" or variants. > (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. > I would agree with this. > (5) It does not behave as expected wrt module interfaces, as these > include > md5 sums over source. > This is a pain, yes, but given how powerful the module system is, and the fact that, e.g. inlining is done across modules, I'm willing to accept this. > (6) I cannot easily COMPILE a function to fast machine code from the > REPL. > You may wish to try "Nativize." It's in the Humps. > (7) I cannot easily (format t "DEBUG: compsite-thingy-bla-now-is ~A~%" > bla). > I don't quite follow; is there something wrong with Printf? > (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. > I was thrown by it for a while, too, but now I find it quite natural, and everything else doesn't seem to fit. Having said that, in my day job, "everything else" means C++. Enough said. :-) > (9) It really annoys having +, +., and +/. Furthermore, it seems a bit > inconsistent, as on the other hand, we have e.g. < and not I think we all eagerly await G'Caml, don't we? > 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. > Amen, and thanks for the thorough, well-articulated points. > -- > regards, tf@cip.physik.uni-muenchen.de (o_ > Thomas Fischbacher - http://www.cip.physik.uni-muenchen.de/~tf //\ > (lambda (n) ((lambda (p q r) (p p q r)) (lambda (g x y) V_/_ > (if (= x 0) y (g g (- x 1) (* x y)))) n 1)) (Debian > GNU) > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > Best regards, Paul Snively -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (Darwin) iEYEARECAAYFAkICnpIACgkQO3fYpochAqLGqgCgopwZLe/i0GycSvfwSgRdTXPr b0oAnAk4latQbVfuHO/lchmm96rI7xA4 =gLb/ -----END PGP SIGNATURE-----