Thanks - nice summary Dave M.
On 14/08/2008, blue storm <[EMAIL PROTECTED]> wrote: > So it seems the debate went on anyway. I had written something, but when > just before posting i saw Brian Hurt's post, and decided not to. It now > seems i was wrong, and actually (when reading the others) my post seems > quite balanced after all. > > I'm not saying that the other posters are biased in any way. But i have the > point of view of someone trying to learn a language "for fun" and in order > to discover interesting features or novel point of views. It seems Haskell > do much better in that context that in the "use it to do something useful in > the cruel world" context used so far. > > So here is my original post : > > I'm afraid your question is a bit too general (and it seems strange to ask > that on the mailing-list of one of the projects, while asking for a balanced > answer). > > The main differences are : > OCaml is impure (imperative features in the language), Haskell is pure. > OCaml is strict, Haskell is lazy. > Ocaml has modules, Haskell has type classes. > > If you're coming from the imperative land, OCaml is, in my opinion, easier > to learn. > It is also a good choice to begin with OCaml because everything you learn > with the OCaml basics can be reused for learning Haskell (the converse is > also true, but then you have to learn lazy evaluation first, wich is a > non-trivial shift, and is vastly less used in OCaml). > Haskell is certainly worth the effort, but my personal opinion is that > learning OCaml first is a good idea. Moreover, for "real world" application, > you may prefer OCaml over Haskell. > > The syntax are different, but not so much (before learning haskell, i could > generally understand the purpose of tiny haskell sources). I have heard some > people say they prefer the Haskell syntax, but this is more a matter of > taste (and not very relevant if you want to learn something from the > language semantics). Both have their ugly sides. > > Idiomatic OCaml implementations tend to produce more efficient than > Idiomatic Haskell implementations (but Haskell compilers are getting better > and better everyday (for Haskell performances to be good, compilers have to > do lots of clever and not so simple optimizations), and Haskell is faster > than most (scripting) languages used these days anyway). > > The Haskell standard library is bigger than the Ocaml one, but this is > probably not an advantage for beginners (because this means more time spent > in browsing the doc, while playing with the language and reimplementing > functions yourself is much more interesting). Haskell program thus tends to > be more terse and "higher-level" (because of reusing a lot of higher-order > combinators in the stdlib): OCaml is also very expressive, but the > simplicity of the stdlib tends to keep people on simpler things. > > To the advanced programmer, both languages have interesting advanced > features to offer. Haskell tends to specialize in sophisticated type system > features, whereas OCaml has an interesting object system, and polymorphic > variants. Both languages have very interesting derivatives, specific > languages intended to explore a specific area (concurrency, metaprogramming, > etc...). > > Camlp4 is a flexible and powerful Ocaml preprocessor. Haskell has some tools > in that direction, that i have never used (so i'm mostly guessing here), but > they seem to be even less supported and used inside the community. > > _______________________________________________ > 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 > > _______________________________________________ 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