A brief introduction to functional programming in Haskell