From dc45cde7ee9e178f1d4826771bfc53470b4503f9 Mon Sep 17 00:00:00 2001 From: vsc Date: Wed, 16 Jul 2008 10:34:00 +0000 Subject: [PATCH] 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 --- library/swi.yap | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/library/swi.yap b/library/swi.yap index 794aec678..1406b923c 100644 --- a/library/swi.yap +++ b/library/swi.yap @@ -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(_,nth1(X,Y,Z),lists,nth(X,Y,Z)). 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(_,append(X,Y),lists,append(X,Y)). swi_predicate_table(_,append(X,Y,Z),lists,append(X,Y,Z)). @@ -316,26 +317,3 @@ prolog:intersection([_|T], L, R) :- prolog:(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]). -