From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id WAA13007; Fri, 30 Apr 2004 22:04:53 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id WAA12991 for ; Fri, 30 Apr 2004 22:04:52 +0200 (MET DST) X-SPAM-Warning: Sending machine is listed in blackholes.five-ten-sg.com Received: from mwinf1001.wanadoo.fr (smtp10.wanadoo.fr [193.252.22.21]) by nez-perce.inria.fr (8.12.10/8.12.10) with ESMTP id i3UK4pEV013272 for ; Fri, 30 Apr 2004 22:04:51 +0200 Received: from vanicat.homelinux.org (ca-bordeaux-12-22.w80-8.abo.wanadoo.fr [80.8.84.22]) by mwinf1001.wanadoo.fr (SMTP Server) with ESMTP id 96F1A1C0024A for ; Fri, 30 Apr 2004 22:04:51 +0200 (CEST) Received: from moi by vanicat.homelinux.org with local (Exim 4.32) id 1BJeFq-00021y-4C for caml-list@inria.fr; Fri, 30 Apr 2004 22:05:02 +0200 To: caml-list@inria.fr Subject: Re: [Caml-list] "List.index" or "List.unique" functions? References: <20040430175429.GB11118@online.fr> <4092A448.6080909@1969.ws> From: Remi Vanicat Mail-Copy-To: never Date: Fri, 30 Apr 2004 22:05:01 +0200 In-Reply-To: <4092A448.6080909@1969.ws> (Karl Zilles's message of "Fri, 30 Apr 2004 12:08:56 -0700") Message-ID: <874qr1nseq.dlv@vanicat.homelinux.org> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit X-Miltered: at nez-perce with ID 4092B163.002 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 int:01 writes:01 remi:01 remi:01 vanicat:01 vanicat:01 wrote:03 recursive:03 recursive:03 suppose:03 tail:03 tail:03 let:04 functions:05 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Karl Zilles writes: > Rahul Siddharthan wrote: >> I have a question: suppose I have a list l1, and I want to create a new >> list l2 with only one copy of any repeated members of the first list >> (eg, l1=[1;2;3;4;3;4;5;6;5] -> l2=[1;2;3;4;5;6]) > > let unique l = List.rev (List.fold_left (fun results x -> if List.mem > x results then results else x::results) [] l);; > > unique [1;2;3;4;3;4;5;6;5];; > - : int list = [1; 2; 3; 4; 5; 6] > > List.rev is not tail recursive, so you wouldn't want to use this > function on industrial size lists. List.rev is tail recursive... [...] -- Rémi Vanicat ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners