Number and Result have to be of the same type.
In coroutining mode, if Number is a free variable, the call to +/2 is delayed until this variable is instantiated.
Success: +(1, 1). +(5, Result). (gives Result = 5) +(-6.2, Result). (gives Result = -6.2) Fail: +(1, 0). Error: +(A, 6). (Error 4). +(1.0, 1). (Error 5). +(1, 1.0). (Error 5). +(4 + 2, 6). (Error 24). +(1, r). (Error 24).