次の関数を使用してフィボナッチ数列を計算しようとしています。
fib(0,A,_,A).
fib(N,A,B,F) :-
N1 is N-1, Sum is A+B, fib(N1, B, Sum, F).
fib(N, F) :- fib(N, 0, 1, F).
これは、次のように機能することを目的としています。
| ?- fib(20,Result).
Result = 6765 ?
しかし、私がこれを試してみると、次のように文句を言います。
| ?- fib(What,6765).
uncaught exception: error(instantiation_error,(is)/2)
なぜこれが起こっているのか誰かが理解していますか?