I would argue that the ? case should return NONE. The logic is that there were no digits. Consider the analgous case: Int.fromString "~", or even "". No number was seen.