Exploring Haskell - various data structure implementations and list manipulation routines