fib([0,1|X]) :- ffib(0,1,X). ffib(A,B,X) :- freeze(X, (C is A+B, X=[C|Y], ffib(B,C,Y)) ).