flatten does not need to be defined as a system predicate.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2287 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
d8e5f2c895
commit
dc45cde7ee
@ -64,6 +64,7 @@ swi_predicate_table(_,nth(X,Y,Z),lists,nth(X,Y,Z)).
|
|||||||
swi_predicate_table(_,delete(X,Y,Z),lists,delete(X,Y,Z)).
|
swi_predicate_table(_,delete(X,Y,Z),lists,delete(X,Y,Z)).
|
||||||
swi_predicate_table(_,nth1(X,Y,Z),lists,nth(X,Y,Z)).
|
swi_predicate_table(_,nth1(X,Y,Z),lists,nth(X,Y,Z)).
|
||||||
swi_predicate_table(_,memberchk(X,Y),lists,memberchk(X,Y)).
|
swi_predicate_table(_,memberchk(X,Y),lists,memberchk(X,Y)).
|
||||||
|
swi_predicate_table(_,flatten(X,Y),lists,flatten(X,Y)).
|
||||||
swi_predicate_table(_,member(X,Y),lists,member(X,Y)).
|
swi_predicate_table(_,member(X,Y),lists,member(X,Y)).
|
||||||
swi_predicate_table(_,append(X,Y),lists,append(X,Y)).
|
swi_predicate_table(_,append(X,Y),lists,append(X,Y)).
|
||||||
swi_predicate_table(_,append(X,Y,Z),lists,append(X,Y,Z)).
|
swi_predicate_table(_,append(X,Y,Z),lists,append(X,Y,Z)).
|
||||||
@ -316,26 +317,3 @@ prolog:intersection([_|T], L, R) :-
|
|||||||
prolog:(Term1 =@= Term2) :-
|
prolog:(Term1 =@= Term2) :-
|
||||||
variant(Term1, Term2), !.
|
variant(Term1, Term2), !.
|
||||||
|
|
||||||
%% flatten(+List1, ?List2) is det.
|
|
||||||
%
|
|
||||||
% Is true it List2 is a non nested version of List1.
|
|
||||||
%
|
|
||||||
% @deprecated Ending up needing flatten/3 often indicates,
|
|
||||||
% like append/3 for appending two lists, a bad
|
|
||||||
% design. Efficient code that generates lists
|
|
||||||
% from generated small lists must use difference
|
|
||||||
% lists, often possible through grammar rules for
|
|
||||||
% optimal readability.
|
|
||||||
|
|
||||||
prolog:flatten(List, FlatList) :-
|
|
||||||
flatten(List, [], FlatList0), !,
|
|
||||||
FlatList = FlatList0.
|
|
||||||
|
|
||||||
flatten(Var, Tl, [Var|Tl]) :-
|
|
||||||
var(Var), !.
|
|
||||||
flatten([], Tl, Tl) :- !.
|
|
||||||
flatten([Hd|Tl], Tail, List) :- !,
|
|
||||||
flatten(Hd, FlatHeadTail, List),
|
|
||||||
flatten(Tl, Tail, FlatHeadTail).
|
|
||||||
flatten(NonList, Tl, [NonList|Tl]).
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user