Various algorithms and data structures implemented in Haskell