From: "blue storm" <bluestorm.dylc@gmail.com>
To: "circ ular" <circularfunc@gmail.com>
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Haskell vs OCaml
Date: Thu, 14 Aug 2008 13:50:43 +0200 [thread overview]
Message-ID: <527cf6bc0808140450w3182b14n60764d3862b9080f@mail.gmail.com> (raw)
In-Reply-To: <d5f6b0140808130548g2492a094v843ed15e1c83adae@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3295 bytes --]
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.
[-- Attachment #2: Type: text/html, Size: 3466 bytes --]
next prev parent reply other threads:[~2008-08-14 11:50 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-13 12:48 circ ular
2008-08-13 13:27 ` [Caml-list] " Brian Hurt
2008-08-14 0:09 ` Jon Harrop
2008-08-14 2:46 ` David Thomas
2008-08-14 2:52 ` Erik de Castro Lopo
2008-08-14 10:37 ` Paolo Donadeo
2008-08-14 12:17 ` Jon Harrop
2008-08-14 16:44 ` Erik de Castro Lopo
2008-08-14 11:50 ` blue storm [this message]
2008-08-14 12:47 ` David Mitchell
2008-08-14 13:28 ` Peng Zang
2008-08-14 14:01 ` Peng Zang
2008-08-15 2:09 ` blue storm
2008-08-14 13:57 ` Jon Harrop
2008-08-14 14:06 ` Peng Zang
2008-08-14 14:21 ` Vincent Hanquez
2008-08-14 14:44 ` Jon Harrop
2008-08-14 20:57 ` Nicolas Pouillard
2008-08-14 21:16 ` Jon Harrop
2008-08-14 21:50 ` Nicolas Pouillard
2008-08-15 0:15 ` Jon Harrop
2008-08-15 1:14 ` Stéphane Glondu
2008-08-17 1:00 ` Luca Saiu
2008-08-19 2:40 ` Paul Snively
2008-08-20 11:33 ` Dr. Thomas Fischbacher
2008-08-21 8:47 ` DooMeeR
2008-08-21 10:59 ` David Teller
2008-08-21 13:52 ` Dr. Thomas Fischbacher
2008-08-14 13:26 Damien Guichard
[not found] <fa.e3jKyg6bl9+vTkPgypQ4ZRzEoos@ifi.uio.no>
2013-03-18 9:08 ` adrian.alexander.may
2013-03-18 9:48 ` Malcolm Matalka
2013-03-18 9:59 ` Gabriel Scherer
2013-03-18 11:05 ` Adrian May
2013-03-18 11:26 ` Kakadu
2013-03-19 1:23 ` Francois Berenger
2013-03-26 10:36 ` Nicolas Braud-Santoni
2013-03-26 0:49 ` Kristopher Micinski
2013-03-26 2:37 ` Erik de Castro Lopo
2013-03-26 2:57 ` Kristopher Micinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=527cf6bc0808140450w3182b14n60764d3862b9080f@mail.gmail.com \
--to=bluestorm.dylc@gmail.com \
--cc=caml-list@yquem.inria.fr \
--cc=circularfunc@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox