The big things that Haskell does that no-one[1] else does are a) strict separation of the parts of the program that do I/O or otherwise change some sort of global state and b) lazy evaluation, which means evaluate a function only when it is needed to do (a). The compiler enforces (a).
(a) is a big deal because it makes it very easy to reason about what your program does, which is handy because (b) is the opposite :-) but makes certain kinds of computations very elegant to express.
(a) is a big deal because it makes it very easy to reason about what your program does, which is handy because (b) is the opposite :-) but makes certain kinds of computations very elegant to express.
[1] Not quite true but close enough