Algorithm And Data Structure In Haskell