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=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 756EABC6B for ; Tue, 9 Oct 2007 16:02:30 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAHsmC0fAXQInh2dsb2JhbACOSAIBCAop X-IronPort-AV: E=Sophos;i="4.21,249,1188770400"; d="scan'208";a="2657428" Received: from concorde.inria.fr ([192.93.2.39]) by mail1-smtp-roc.national.inria.fr with ESMTP; 09 Oct 2007 16:02:30 +0200 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id l99E2HqQ020287 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Tue, 9 Oct 2007 16:02:29 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAHsmC0dAahQhh2dsb2JhbACOSAIBCAop X-IronPort-AV: E=Sophos;i="4.21,249,1188770400"; d="scan'208";a="2657425" Received: from mail.cs.unm.edu ([64.106.20.33]) by mail1-smtp-roc.national.inria.fr with ESMTP; 09 Oct 2007 16:02:28 +0200 Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.cs.unm.edu (Postfix) with ESMTP id D3AD0E4196; Tue, 9 Oct 2007 08:02:25 -0600 (MDT) Received: from mail.cs.unm.edu ([127.0.0.1]) by localhost (mail [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 16652-04; Tue, 9 Oct 2007 08:02:25 -0600 (MDT) Received: from cs.unm.edu (webmail.cs.unm.edu [64.106.20.39]) by mail.cs.unm.edu (Postfix) with ESMTP id 64A9FE417E; Tue, 9 Oct 2007 08:02:25 -0600 (MDT) From: "William D. Neumann" To: skaller , caml-list@inria.fr Subject: Re: [Caml-list] Correct way of programming a CGI script Date: Tue, 9 Oct 2007 09:02:30 -0500 Message-Id: <20071009135146.M36738@cs.unm.edu> In-Reply-To: <1191884703.26491.9.camel@rosella.wigram> References: <1191859489.10162.16.camel@localhost.localdomain> <1191879429.28011.27.camel@rosella.wigram> <20071009082147.657017dc.mle+ocaml@mega-nerd.com> <1191884703.26491.9.camel@rosella.wigram> X-Mailer: Open WebMail 2.50 20050106 X-OriginatingIP: 205.175.225.22 (wneumann) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at cs.unm.edu X-Miltered: at concorde with ID 470B89E9.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ocaml:01 gettimeofday:01 gettimeofday:01 val:01 pred:01 val:01 ting:98 wrote:01 unix:01 unix:01 rec:01 caml-list:01 int:01 neumann:02 neumann:02 On Tue, 09 Oct 2007 09:05:03 +1000, skaller wrote > Fraid not. Python eats Ocaml alive. Sure. If you want to go about your task in a hideously naive manner. Let's try something different: # let time f a = let t0 = Unix.gettimeofday () in let r = f a in r, (Unix.gettimeofday () -. t0);; val time : ('a -> 'b) -> 'a -> 'b * float = # let a_cat n = let rec build_as acc = function | 0 -> acc | n -> build_as ("a"::acc) (pred n) in String.concat "" (build_as [] n);; val a_cat : int -> string = # snd (time a_cat 1_000_000);; - : float = 0.55100011825561523 Now, it's not necessarily the first ting a person might think of for this task, and it's not applicable to all uses of concatination, but for the task that started this thread (slapping together bits of text to make a web page) and for tasks like hard coding concatinations it's very convenient. -- William D. Neumann