From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 006A3BC6C for ; Fri, 18 Jan 2008 20:53:03 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAPKQkEdIDtyYkmdsb2JhbACQFAEBAQEHAgYJChaWEIdp X-IronPort-AV: E=Sophos;i="4.25,218,1199660400"; d="scan'208";a="21487932" Received: from fg-out-1718.google.com ([72.14.220.152]) by mail4-smtp-sop.national.inria.fr with ESMTP; 18 Jan 2008 20:53:03 +0100 Received: by fg-out-1718.google.com with SMTP id l27so1563889fgb.43 for ; Fri, 18 Jan 2008 11:53:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:subject:from:to:cc:in-reply-to:references:content-type:date:message-id:mime-version:x-mailer:content-transfer-encoding; bh=cccbm3Yb1fdMA7GSl5hUDquiWp61RqIFb6vosRftV7E=; b=xIHvvM23oQN0sXDZ7YzhpWn9RFwrLQkGdIJMFNdMwiPmuwAgwDUdoXZNqbqumkik2+KM3+mkf1W52t00E1v+Tp5NLWWn/yUNsr+v9oZDMgih9uNnQ0Mr6fAjbT8m0FCobOGM33akfYdSImAen4kDkBw4XiH/QMaALkTjwwBcUYw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:in-reply-to:references:content-type:date:message-id:mime-version:x-mailer:content-transfer-encoding; b=jlHuvKp+SccfIFE9qiMhfLNyNwtJZGk14c/efc6FcC9IjAM4RFJ01LnKGXxuEtOXs2RWqjMqgn34dMrAEio0NVD7iEnSLZLPKuKvU1FVLJFwq5hVQdhhynpedLO+tQFEMlb57iQvT6cNEqqUZ0Ft5SBxKkoNPPbneRUK0OG5KDc= Received: by 10.86.90.2 with SMTP id n2mr3406583fgb.66.1200685983290; Fri, 18 Jan 2008 11:53:03 -0800 (PST) Received: from ?192.168.0.10? ( [82.237.227.151]) by mx.google.com with ESMTPS id 3sm6359480fge.7.2008.01.18.11.53.02 (version=SSLv3 cipher=RC4-MD5); Fri, 18 Jan 2008 11:53:02 -0800 (PST) Subject: Re: [Caml-list] Strange performances From: Benjamin Canou To: caml-list@yquem.inria.fr Cc: Jon Harrop In-Reply-To: <200801181743.22912.jon@ffconsultancy.com> References: <1200619933.6383.47.camel@benjamin-laptop> <20080118.181206.85503086.garrigue@math.nagoya-u.ac.jp> <1200675314.6345.32.camel@benjamin-laptop> <200801181743.22912.jon@ffconsultancy.com> Content-Type: text/plain; charset=UTF-8 Date: Fri, 18 Jan 2008 20:53:19 +0100 Message-Id: <1200685999.6345.40.camel@benjamin-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.12.1 Content-Transfer-Encoding: 8bit X-Spam: no; 0.00; mutable:01 downto:01 imho:01 rec:01 caml-list:01 unsafe:01 imperative:01 benjamin:01 benjamin:01 data:02 structures:02 string:02 string:02 vendredi:03 naive:03 Le vendredi 18 janvier 2008 à 17:43 +0000, Jon Harrop a écrit : > As an aside, I would recommend using an imperative style with mutable data > structures like "string" are involved: > > let list_of_string string = > let list = ref [] in > for i = String.length string - 1 downto 0 do > list := string.[i] :: !list > done; > !list;; > Actually, and as I said in my first message, it was a really naive implementation, for which I used the more compact and quick to write code. Imho, I would not add references and write the function like this : let list_of_string str = let rec aux i acc = if i < 0 then acc else aux (i - 1) (String.unsafe_get str i :: acc) in aux (String.length str - 1) [] But we are digressing... Benjamin.