All the algorithms from MIT 6.046 (Design and Analysis of Algorithms) in Haskell instead of imperative code