exercises from How to Design Programs in Scheme and Ruby