[Haskell] What makes a functional language functional?