fix $skip_list (patch from Ulrich Neumerkel). It should be moved to C-code.
This commit is contained in:
parent
ced3448c9a
commit
9ce8df7bcd
23
GPL/error.pl
23
GPL/error.pl
@ -248,14 +248,21 @@ is_list_or_partial_list(L0) :-
|
|||||||
|
|
||||||
:- if(current_prolog_flag(dialect, yap)).
|
:- if(current_prolog_flag(dialect, yap)).
|
||||||
|
|
||||||
% vsc: I hope it works like this
|
% UWN: only an approximation
|
||||||
'$skip_list'(_, Rest, Rest) :- var(Rest), !.
|
'$skip_list'(N, Xs0,Xs) :-
|
||||||
'$skip_list'(_, [], _) :- !, fail.
|
'$skip_list_i'(0,N, Xs0,Xs).
|
||||||
'$skip_list'(Anything, [_|More], Rest) :-
|
|
||||||
'$skip_list'(Anything, [_|More], Rest).
|
'$skip_list_i'(N0,N, Xs0,Xs) :-
|
||||||
'$skip_list'(Anything, [_|More], Rest) :-
|
var(Xs0), !,
|
||||||
'$skip_list'(Anything, More, Rest).
|
N0 = N,
|
||||||
'$skip_list'(_Anything, Rest, Rest).
|
Xs0 = Xs.
|
||||||
|
'$skip_list_i'(N0,N, [],Xs) :- !,
|
||||||
|
N0 = N,
|
||||||
|
Xs = [].
|
||||||
|
'$skip_list_i'(N0,N, [_|Xs0],Xs) :- !,
|
||||||
|
N1 is N0 + 1,
|
||||||
|
'$skip_list_i'(N1,N, Xs0,Xs).
|
||||||
|
'$skip_list_i'(N,N, Xs,Xs).
|
||||||
|
|
||||||
:- endif.
|
:- endif.
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user