Haskell is cool, because

  • Pattern matching syntax, avoiding 'if' statements

  • Recursive types that may contain many other values of the same type

  • Inferred types

  • Lazy evaluation, they delay the evaluation of an expression until its value is needed

  • Monads, which provide us with a single way to describe many types of computation that seem very different at first