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