Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 beta 3/9/83; site sdcrdcf.UUCP Path: utzoo!watmath!clyde!burl!ulysses!unc!mcnc!decvax!ittvax!dcdwest!sdcsvax!sdcrdcf!markb From: markb@sdcrdcf.UUCP Newsgroups: net.lang.prolog Subject: Fast list reverse Message-ID: <1124@sdcrdcf.UUCP> Date: Fri, 8-Jun-84 11:54:54 EDT Article-I.D.: sdcrdcf.1124 Posted: Fri Jun 8 11:54:54 1984 Date-Received: Sun, 10-Jun-84 00:50:50 EDT Reply-To: markb@sdcrdcf.UUCP (Mark Biggar) Organization: System Development Corporation, Santa Monica Lines: 24 Does any one have a faster list reverse routine then: reverse([H|T],Y) :- rev1(H,[],T,Y). reverse([],[]). rev1(X,L,[],[X|L]). rev1(X,L,[H|T],Y) :- rev1(H,[X|L],T,Y). This appears to be O(n): n length of list. The "usual" definition of reverse: reverse([],[]). reverse([H|T],X) :- reverse(T,T1), append(T1,H,X). is O(n**2) at least. Mark Biggar {allegra,burdvax,cbosgd,hplabs,ihnp4,sdcsvax}!sdcrdcf!markb