ch 4 OptionM code (fpinscala)