In coroutining mode, if Number is a free variable, the call to sin/2 is delayed until this variable is instantiated.
Success: sin(1.5708, 1.0). sin(-1.5708, Result). (gives Result = -1.0) sin(0, Result). (gives Result = 0.0) Fail: sin(1, 0.0). Error: sin(A, 6.0). (Error 4). sin(6, 3). (Error 5). sin(4 + 2, -0.279415). (Error 24). sin(5, r). (Error 24).