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 OAA20524; Mon, 12 May 2003 14:57:10 +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 OAA20548 for ; Mon, 12 May 2003 14:57:09 +0200 (MET DST) Received: from pacific-carrier-annex.mit.edu (PACIFIC-CARRIER-ANNEX.MIT.EDU [18.7.21.83]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id h4CCv8T29353 for ; Mon, 12 May 2003 14:57:08 +0200 (MET DST) Received: from grand-central-station.mit.edu (GRAND-CENTRAL-STATION.MIT.EDU [18.7.21.82]) by pacific-carrier-annex.mit.edu (8.12.4/8.9.2) with ESMTP id h4CCv6fa006281; Mon, 12 May 2003 08:57:07 -0400 (EDT) Received: from manawatu-mail-centre.mit.edu (MANAWATU-MAIL-CENTRE.MIT.EDU [18.7.7.71]) by grand-central-station.mit.edu (8.12.4/8.9.2) with ESMTP id h4CCv6DP018881; Mon, 12 May 2003 08:57:06 -0400 (EDT) Received: from nerd-xing.mit.edu (NERD-XING.MIT.EDU [18.7.16.74]) ) by manawatu-mail-centre.mit.edu (8.12.4/8.12.4) with ESMTP id h4CCv5FJ013646; Mon, 12 May 2003 08:57:05 -0400 (EDT) Received: (from jfc@localhost) by nerd-xing.mit.edu (8.9.3p2) id IAA29080; Mon, 12 May 2003 08:57:05 -0400 (EDT) Message-Id: <200305121257.IAA29080@nerd-xing.mit.edu> To: Brian Hurt cc: caml-list@inria.fr Subject: Re: [Caml-list] tree walking with... specular rec functions? what else? In-Reply-To: Your message of "Fri, 09 May 2003 10:23:20 CDT." Date: Mon, 12 May 2003 08:57:05 -0400 From: John Carr X-Spam: no; 0.00; jfc:01 caml-list:01 rec:01 match:02 inner:02 tree:02 algorithm:03 let:04 outer:04 carr:05 functions:05 linear:06 minor:07 lists:91 comment:08 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk I have a minor comment unrelated to the basic algorithm. > ... > let rec outer lst = > if (List.length lst) == 0 then () > else outer (inner lst []) > in > ... In general it is better to test for empty rather than compare the size of a collection to 0. With some collections (including lists) testing for empty takes constant time but computing size takes linear time. Instead of if (List.length lst) == 0 then empty-code else full-code either of these will be faster: if lst == [] then empty-code else full-code (match lst with [] -> empty-code | _ -> full-code) ------------------- 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