The Knapsack Problem in Haskell