I've tried debugging the `num_args` and the impact on `get_callable`, but I only met confusion. 

Say a function has two parameters and one result, then `A,B -> X` and `A,C -> Y`. However as the function's cache strategy only accounts for the first argument, it will always do the same, namely `A,? -> X` UNLESS in the case of an exception. Now when the exception happened for `A,D -> ?`, then no cache is written and `A,C -> Y`. However if `A,C -> Y` is executed FIRST and cached, then `A,? -> Y` and thus `A,D -> Y` -- no exception being raised.

See also my added test which shows the problem for `num_args=1`.