ML for the working programmer (2. ed.)