Describir: Recursive Functional Programming for the Student in the Humanities and Social Sciences. Revised Edition