

Making the Case for Haskell - jamesatgem
http://blog.gem.co/post/119547746215/making-the-case-for-haskell

======
TheEzEzz
> As you can probably tell - this problem doesn't even make sense in
> mathematical terms. Because remember, math is not an ordered execution of
> statements, it’s equality. You are not describing what to do, you’re
> describing what is.

I think this is my fundamental concern with Haskell. "Describing what is", aka
mathematics, has two fundamental problems:

1) It is _hard_ to reason about. After all, the entirety of mathematics,
including problems outstanding for hundreds of years, concern these problems.

2) Describing what is does not give you what is.

In math you first describe what is, then work really hard to prove that it
actually is, and after all of that work you still don't actually have the
thing that is.

Obviously Haskell _is_ concerned with what actually is, and obviously the
compiler can't do arbitrarily difficult mathematical analysis, so in practice
you're left with a "describe what is" language that is arbitrarily less
powerful than real math, and arbitrarily more concerned with laying things out
so a computer can do it (being imperative, essentially). Haskell sits between
pure math and imperative languages, but exactly where it sits doesn't feel
elegantly prescribed to me, whereas math and imperative languages do.

~~~
nanolith
You're right. It's not as pure as mathematics. But, it is much purer and
cleaner than a lot of languages in use today. It lends itself well to
translating into formal proofs, and it is a great testing bed for ideas.
Haskell has a certain beauty to it that sets it apart from other languages.
There is no perfect programming language, and Haskell has its weak points.
However, I find that it is great for prototyping and reference designs. I can
take advantage of its clarity and strong type system to build simulators for
protocols, algorithms, services, and even operating systems. I can then use
these simulators as integration testbeds for building solid components in
lower level languages. Haskell also makes a great language for compiler
writing and text processing.

I think that the language fills an important niche. It's probably never going
to be a mainstream language, as it does have a certain erudite aura about it,
but it is a language well worth learning.

