Algorithms: A Functional Programming Approach (International Computer Science Series)