What are the features that make Haskell so special?
I have noticed that experienced programmers prefer Haskell. What are the advantages it provides? With so many people with this preference means it provides some unique features what am I missing there?
Experts say these are some features which make it great
I wouldn't dare to call myself a Haskell expert. But you will keep hearing these features if you go deep into Haskell.
Complete Functional Nature
A general function may change the global variable and/or develop some arguments within. This phenomenon is known as side effects. And Haskell doesn't cause any side effects at all. Actually, it is better than this. Haskell prohibits any kind of side effects. This makes any code less amenable to error. But you can reveal the side effects if you want to. You just have to use Monads.
Higher order programming
Higher order programming lets you combine different segments of codes to get to the solution. Haskell takes another function and/or several functions as arguments.
Haskell follows Lazy Evaluation. It means, Haskell doesn't evaluate any expression before it is defined by any variable. It lets you define a function and some of its arguments will never be evaluated unless they are being called during runtime. Lazy functions are surely beneficial for performance and it lets you include infinite series. But like everything else, it has some flaws too. It makes it hard to predict memory allocation.
Any compiler helps or takes some measures to let the programmer know the errors. When you use Haskell, you may feel that it is communicating with you.
Every now and then programmers face problems. That is when the community helps. And luckily, Haskell has an ever growing community. Hackage is a repository for open source Haskell packages.