Functional Programming 101 in Haskell