working through ML for the Working Programmer