exercises from "the craft of functional programming, third edition"