Browse thread
Estimating the size of the ocaml community
-
Yaron Minsky
-
Christopher A. Watford
-
Frédéric_Gava
-
skaller
-
Erik de Castro Lopo
- Olivier_Pérès
-
Thomas Fischbacher
-
Frédéric_Gava
-
Thomas Fischbacher
- Paul Snively
- josh
- Richard Jones
-
Jon Harrop
-
Michael Walter
-
Jon Harrop
- Damien Doligez
- Thomas Fischbacher
- Michael Walter
-
Radu Grigore
- Gerd Stolpmann
- Jon
-
Jon Harrop
- Thomas Fischbacher
- Richard Jones
-
Michael Walter
- Ville-Pertti Keinonen
- Oliver Bandel
- Basile STARYNKEVITCH
-
Thomas Fischbacher
- ronniec95@l...
- skaller
- chris.danx
-
Frédéric_Gava
-
Erik de Castro Lopo
- sejourne_kevin
- Stefano Zacchiroli
-
skaller
-
Frédéric_Gava
- Kenneth Knowles
- Michael Jeffrey Tucker
- Richard Jones
- Nicolas Cannasse
- Evan Martin
- Eric Stokes
- chris.danx
- Sylvain LE GALL
- sejourne_kevin
- Sven Luther
- Johann Spies
-
Christopher A. Watford
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2005-02-03 (21:16) |
From: | Thomas Fischbacher <Thomas.Fischbacher@P...> |
Subject: | Re: [Caml-list] Estimating the size of the ocaml community |
On Thu, 3 Feb 2005, Frédéric Gava wrote: > > Anyway, this leaves us with a very interesting question: how many people > > actually do believe in the value of Ocaml? I, for myself, use it whenever > > it is the most appropriate tool for a job (usually, when portability is > > an issue). This is sometimes the case, but more often than not, LISP > > turned out to be a better choice for what I do. > What kinds of programs code with LISP could not be implemented (easely) > using Ocaml ? 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. (2) Speaking of syntax, there's a lot of unnecessary cruft in virtually any language besides LISP (or rather, Scheme). (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.) (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. (5) It does not behave as expected wrt module interfaces, as these include md5 sums over source. (6) I cannot easily COMPILE a function to fast machine code from the REPL. (7) I cannot easily (format t "DEBUG: compsite-thingy-bla-now-is ~A~%" bla). (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. (9) It really annoys having +, +., and +/. Furthermore, it seems a bit inconsistent, as on the other hand, we have e.g. < and 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. -- 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)