20 intermediate haskell exercises