functional programming 101 with haskell