Anonymous recursion: Difference between revisions

No edit summary
Line 378:
/fib {
{2 lt} {} {pred dup pred} {+} binrec}.
</lang>
 
=={{header|Prolog}}==
Works with SWI-Prolog and module <b>lambda</b>, written by <b>Ulrich Neumerkel</b> found there http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/lambda.pl
The code is inspired from this page : http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/ISO-Hiord (Hiord, p106).
<lang prolog>:- use_module(lambda).
 
fib(N, _F) :-
N < 0, !,
write('Error, first arg must be positive !'), nl.
 
 
fib(N, F) :-
Li = \Lr1^Nb^F^P^Rr1^(Nb < N ->
Nb1 is Nb + 1,
Lr1 = [X,Y,Z|Xs],
call(P,X,Y,Z),
call(Rr1,[Y,Z|Xs],Nb1,F,P,Rr1)
;
Lr1 = [_, F, _]
),
 
List = Li +\Lr2^Nb2^F^Pr1^call(Li,Lr2,Nb2,F,Pr1,Li),
 
Xss = [0,1|_],
call(List,Xss,1,F,\Xs^Ys^Zs^(Zs is Xs + Ys)).
</lang>
 
Anonymous user