Should I Learn Haskell or Scheme?

preview_player
Показать описание
Should I learn Haskell or Scheme?

There's a scheme to introduce Scheme to people via major publications to get them to switch to Scheme from Haskell.

I heard Haskell has a larger user base, but Scheme is better.

Scheme is the scientific equivalent of Ruby on Rails. It isn't better than the major competitors, but it gets points for being new and cool.

I've heard people say you should learn Haskell because of its purely functional design.

Purists are idiots, or elitists. Take your pick.

But with Scheme, no one is moaning about Monads.

What about objecting to object oriented programming? Functional versus object oriented programming is like digital versus analog, but mixing the two makes coding harder.

Why would someone want to program in Haskell, given how hard it is?

Maybe it is the fact that there's a Haskell library called Hackage, so you can call yourself an ethical hacker if you use it. Or the fact that it still dominates a lot of scientific computing.

I heard syntax was harder in Scheme.

And Haskell forces you to learn to think logically and write code with strict logical discipline. That logic improves your coding even if you move to another language.

That's like saying you should learn Latin to force yourself to be careful with various noun and verb tenses before learning Latvian.

Haskell has better semantics.

I saw the explanation of the semantics using lambda calculus. I thought the language was hard enough without looking like you need to know Calculus 3 to code.

Scheme has cleaner semantics, but it is still hard to teach.

Where is Scheme better?

Theoretically, Scheme is better for non-computational tasks like writing to files and network communications. However, you can create interfaces with JavaScript and other languages with Haskell code instead of using Scheme.

Haskell is harder to debug. You can't use printf to debug a function unless it is in an i/o monad.

Scheme is designed to be simple, but it isn't as robust.

Maybe I should learn Haskell, and pick up Scheme when I'm tired of trying to learn the pure code of Haskell.
Рекомендации по теме