Should I learn LISP or Haskell?

31 views
Skip to first unread message

Arnaud Dagnelies

unread,
Dec 12, 2007, 6:06:32 AM12/12/07
to

Hello,

I would be interested in learning one of these languages a bit
further. Simply out of curiosity, to improve my knowledge of
functional languages. Which one would you suggest?

Thanks

Vesa Karvonen

unread,
Dec 12, 2007, 6:09:30 AM12/12/07
to
Arnaud Dagnelies <arnaud.d...@gmail.com> wrote:
[...]

> I would be interested in learning one of these languages a bit
> further. Simply out of curiosity, to improve my knowledge of
> functional languages. Which one would you suggest?

I would suggest learning both.

-Vesa Karvonen

Message has been deleted

Arnaud Dagnelies

unread,
Dec 12, 2007, 6:27:00 AM12/12/07
to
On 12 déc, 12:11, hu47121+nos...@usenet.kitty.sub.org (Hannah
Schroeter) wrote:
> Hi!
> Depends on what you want to focus on learning.
>
> Metaprogramming? An object orientation system that's quite different
> in a refreshing way from the mainstream stuff you see in Java/C++/...?
> Dynamic features? That'd suggest Common Lisp (perhaps together with an
> AMOP implementation, which most CL implementations include).
>
> Being pure functional? A modern, sound statical type system? Interesting
> mathematical properties? And still, being practically useful? That'd
> suggest Haskell.
>
> Kind regards,
>
> Hannah.

Thanks for the input ...i'll give a first shoot at LISP then.

paul.s...@gmail.com

unread,
Dec 12, 2007, 9:07:07 AM12/12/07
to
On Dec 12, 11:27 am, Arnaud Dagnelies <arnaud.dagnel...@gmail.com>
wrote:

> Thanks for the input ...i'll give a first shoot at LISP then.

I recommend these freely available lectures:

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

There is an accompanying book which you can buy or download.

Griff

unread,
Dec 12, 2007, 10:09:26 AM12/12/07
to
On Dec 12, 5:06 am, Arnaud Dagnelies <arnaud.dagnel...@gmail.com>
wrote:

> Which one would you suggest?

Go with whichever language keeps you interested.

You should start with Scheme, but don't stop there!

Rainer Joswig

unread,
Dec 12, 2007, 10:22:21 AM12/12/07
to
In article
<db0c4400-9b6e-4f0e...@f3g2000hsg.googlegroups.com>,
"paul.s...@gmail.com" <paul.s...@gmail.com> wrote:

I'd say start with 'Practical Common Lisp'.

HTML version:
http://gigamonkeys.com/book/
PDF version (Free ebook download):
http://www.apress.com/book/view/1590592395
Alternatively get the printed version.

--
http://lispm.dyndns.org/

Arnaud Dagnelies

unread,
Dec 13, 2007, 5:13:59 AM12/13/07
to
On 12 déc, 16:22, Rainer Joswig <jos...@lisp.de> wrote:
> In article
> <db0c4400-9b6e-4f0e-963e-227049d5a...@f3g2000hsg.googlegroups.com>,

>
> "paul.sinn...@gmail.com" <paul.sinn...@gmail.com> wrote:
> > On Dec 12, 11:27 am, Arnaud Dagnelies <arnaud.dagnel...@gmail.com>
> > wrote:
> > > Thanks for the input ...i'll give a first shoot at LISP then.
>
> > I recommend these freely available lectures:
>
> >http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
>
> > There is an accompanying book which you can buy or download.
>
> I'd say start with 'Practical Common Lisp'.
>
> HTML version:
> http://gigamonkeys.com/book/
> PDF version (Free ebook download):
> http://www.apress.com/book/view/1590592395
> Alternatively get the printed version.
>
> --http://lispm.dyndns.org/

Thanks everybody, i'll take a look at all these ressources.

Sean Gillespie

unread,
Dec 13, 2007, 7:18:11 AM12/13/07
to
> I would be interested in learning one of these languages a bit
> further. Simply out of curiosity, to improve my knowledge of
> functional languages. Which one would you suggest?

If you want to learn a functional language, haskell is clearly your
best option. If you want to learn lisp, you might want to look at
scheme or common-lisp - and out of those two I would say scheme is
more functional.

Jon Harrop

unread,
Dec 14, 2007, 8:24:15 AM12/14/07
to

They both have interesting merits that I'm sure you will find most
enlightening. So I recommend you learn both.

You have chosen rather an odd combination though and I do wonder how you
arrived that those two languages. Lisp is often considered the more
practical but ugly sibling of Scheme. Haskell is often considered the less
practical but more elegant cousin of OCaml. You may also be interested in
Erlang, which is dynamically typed like Lisp but its foundation is wildly
different and heavily geared towards the creation of high-reliability
massively-concurrent applications.

You may also like F# if you're interested in commercial applications of
functional programming languages. Similarly for Scala, although it is much
less common than F#.

--
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/products/?u

Arnaud Dagnelies

unread,
Dec 15, 2007, 11:52:15 AM12/15/07
to

...well ...I just wanted to go outside the mainstream languages
because of two reasons. First, I feel like enclosed in a box with
them. Second, I would like to learn "other ways of thinking" and just
have an idea of other languages. I already had some experience with a
language called Oz with was interesting but I hadn't the experience at
that time to really take profit of the course. The issue is that there
are soooooooo many languages outside that you have to pick one in the
whole. The reason I took Haskell is because it looks like it's
becoming the "standart" for functional programming, and LISP because I
heard you can do very high-level stuff with it and also a language on
its own. ...these choices are arbitrary though ...you just have to
pick one among them all. I'm also toying around with the idea of
implementing custom mini-languages but i'm not yet ready for it.

Joachim Durchholz

unread,
Dec 15, 2007, 5:55:09 PM12/15/07
to
Arnaud Dagnelies schrieb:

> I already had some experience with a
> language called Oz with was interesting but I hadn't the experience at
> that time to really take profit of the course.

Interesting - Oz is the one true multiparadigm language that I know.

> The issue is that there
> are soooooooo many languages outside that you have to pick one in the
> whole. The reason I took Haskell is because it looks like it's
> becoming the "standart" for functional programming,

Well, its the standard for nonstrict FPLs, and absorbed half a dozen or
so other nonstrict FPL in its creation.

For languages with a strict evaluation strategy, you can look at Lisp
(which has additional unique features), or any of the ML variants (there
is no de facto standard for that branch of FPLs).

> and LISP because I
> heard you can do very high-level stuff with it and also a language on
> its own.

You can do very high-level stuff in any language.
Lisp tends to use macros where other FPLs tend to rely on higher-order
functions (i.e. functions that are given functions to do their work).

> ...these choices are arbitrary though ...you just have to
> pick one among them all.

That's difficult. Whatever you choose, your view will be slanted afterwards.

Regards,
Jo

David B. Benson

unread,
Dec 15, 2007, 6:37:55 PM12/15/07
to
On Dec 15, 2:55 pm, Joachim Durchholz <j...@durchholz.org> wrote:
> ... or any of the ML variants (there

> is no de facto standard for that branch of FPLs).

Gosh, and all this time I thought Standard ML was the
standard.

;-)

Jon Harrop

unread,
Dec 15, 2007, 7:59:38 PM12/15/07
to
Arnaud Dagnelies wrote:
> The reason I took Haskell is because it looks like it's
> becoming the "standart" for functional programming,

I recently did a survey of the popularity of FPLs on Linux and found that
Haskell, OCaml and Erlang are jointly most popular:

http://flyingfrogblog.blogspot.com/2007/11/most-popular-functional-languages-on.html

Also, I believe OCaml and Erlang see a lot more industrial use and support
than Haskell.

> and LISP because I
> heard you can do very high-level stuff with it and also a language on
> its own. ...these choices are arbitrary though ...you just have to
> pick one among them all. I'm also toying around with the idea of
> implementing custom mini-languages but i'm not yet ready for it.

You might like these articles of mine:

http://www.ffconsultancy.com/ocaml/benefits/interpreter.html
http://groups.google.co.uk/group/fa.caml/msg/5aee553df34548e2

Chris Smith

unread,
Dec 17, 2007, 7:16:07 PM12/17/07
to
Arnaud Dagnelies wrote:
> ...well ...I just wanted to go outside the mainstream languages
> because of two reasons. First, I feel like enclosed in a box with
> them. Second, I would like to learn "other ways of thinking" and just
> have an idea of other languages.

Okay, you should DEFINITELY start by learning Scheme. You can revisit
your choice of where to go from there once you've got some experience
with Scheme. The Abelson/Sussman lectures are very good; then do a
little experimenting on your own.

Once you've got Scheme down, you'll have a few choices:

1. Scheme itself is actually used; you can learn more libraries and
techniques for doing real-world work in Scheme. In particular, as far
as I recall, the Abelson/Sussman lectures don't mention macros at all.

2. Haskell is the only other functional language that's anywhere near as
elegant as Scheme. It brings a strong type system, more intuitive
syntax, and a different approach to the highest levels of abstraction
than Scheme does. It also brings the idea of referential transparency
to its full, and rather beautiful, conclusion. Haskell, as well, is
used for real applications.

3. You can learn Common Lisp. You'll lose a lot of the pure elegance of
Scheme and Haskell. The sudden distinction between code and data throws
away a huge part of elegance of Scheme in just one step! But, in
exchange, you get a little more flexibility and a lot of pragmatic
benefits, including compilers that can produce faster code.

4. ML may be worth looking at, too. It's a little less radical than
Haskell, but still has a strong type system, and first class modules are
interesting.

--
Chris Smith

Pascal Costanza

unread,
Dec 18, 2007, 1:49:06 AM12/18/07
to
Chris Smith wrote:

> 3. You can learn Common Lisp. You'll lose a lot of the pure elegance of
> Scheme and Haskell. The sudden distinction between code and data throws
> away a huge part of elegance of Scheme in just one step! But, in
> exchange, you get a little more flexibility and a lot of pragmatic
> benefits, including compilers that can produce faster code.

Your overall recommendation is good. However, what do you mean by
"sudden distinction between code and data"? Common Lisp doesn't
distinguish between code and data. Could you be more specific what you
mean here?


Pascal

--
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/

Reply all
Reply to author
Forward
0 new messages