99 Problems in Haskell
functional programming practice