
Ask HN: Lisp or Haskell at first? - sudeep1
(I am not creating war and comparing Lisp and Haskell)<p>I want to learn Haskell and Lisp. But I am in puzzle to learn which one at first. If i learn Haskell first and it will be easier to learn Lisp or Learning Lisp at first will help to learn Haskell.
======
moron4hire
Having studied Lisp and recently started on Haskell, I find Lisp to have a
shallower learning curve. For Lisp, people fear the day they have to learn its
macros. For Haskell, that monster lurking in the closet is the type system.

But you can be productive in (most) Lisp(s) without touching macros. It is
often suggested to try very hard to do so. And I've personally found that,
library spelling issues aside, Python code translates almost 1-to-1 to Lisp
with simple text replacements.

But any non-trivial application in Haskell is going to have to approach
problems in fairly different ways than any other language. Lazy evaluation;
pure, side-effect-free functions; types and type classes and all that jazz;
emphasis on solutions involving the "fold" function, rather than recursion.
It's significantly different than most other languages I've encountered.

~~~
gus_massa
It could be useful to learn an "almost" functional version of Lisp, like
Scheme/Racket or Clujure. (You can also try to write "almost" functional code
in Common Lisp, but the usual idioms are more imperative.)

The idea is that you write "almost" all the code in small functional functions
without side effects, but you can use side effect when the functional solution
is very difficult.

Most of them are not typed (there is a Typed Racket version, but the type
system is not similar to the Haskell type system).

------
codygman
If you've learned no languages learn Haskell first. If you have experience
with imperative languages, learn LISP first. If you decide on learning a lisp
but still want static typing, checkout Shen:

[http://shenlanguage.org/](http://shenlanguage.org/)

------
SamReidHughes
Definitely Haskell. There are so many dynamically typed impure functional
languages these days, and Lisp is not some great learning experience. Haskell
is (if you take it to a sufficient degree of crazy).

------
jagawhowho
I vote for learning lisp first. Lisp is nice in that it is not married to a
paradigm. Sometimes a stateful solution is the ideal. Although not part of the
language, the interactive environment (slime) coupled with manipulation tools
(paredit) make lisp feel like an extension of your fingertips. It's hard to
describe.

Haskell the language is powered by the tears of the gods. But it may not have
the world class tooling you get with lisp.

