algorithms Practicing "Functional Programming" and Test-Driven Development by Creating an Algorithm Library