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 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 7BF78BC6B for ; Wed, 7 Nov 2007 05:00:35 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAA/HMEfa1uFinmdsb2JhbACOfgEBBwQGERiUGw X-IronPort-AV: E=Sophos;i="4.21,382,1188770400"; d="scan'208";a="4132189" Received: from discorde.inria.fr ([192.93.2.38]) by mail1-smtp-roc.national.inria.fr with ESMTP; 07 Nov 2007 05:00:35 +0100 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id lA740YBb019642 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Wed, 7 Nov 2007 05:00:35 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAA/HMEfa1uFinmdsb2JhbACOfgEBBwQGERiUGw X-IronPort-AV: E=Sophos;i="4.21,382,1188770400"; d="scan'208";a="4132186" Received: from smtp.syd.people.net.au ([218.214.225.98]) by mail1-smtp-roc.national.inria.fr with SMTP; 07 Nov 2007 05:00:32 +0100 Received: (qmail 30447 invoked from network); 7 Nov 2007 04:00:29 -0000 Received: from unknown (HELO hendrix.mega-nerd.net) (218.214.64.136) by smtp.syd.people.net.au with SMTP; 7 Nov 2007 04:00:29 -0000 Received: from hendrix (hendrix [192.168.200.99]) by hendrix.mega-nerd.net (Postfix) with SMTP id 41DFFAB09D for ; Wed, 7 Nov 2007 15:00:18 +1100 (EST) Date: Wed, 7 Nov 2007 15:00:16 +1100 From: Erik de Castro Lopo To: caml-list@inria.fr Subject: Re: [Caml-list] log function without evaluate arguments Message-Id: <20071107150016.61b256ac.mle+ocaml@mega-nerd.com> In-Reply-To: <4a051d930711061939p621c0a8ao4472a82973dcc855@mail.gmail.com> References: <47309EEC.4080706@menta.net> <1194373338-sup-9994@ausone.local> <9d3ec8300711061040l424aac69y4b859a029d815089@mail.gmail.com> <4730B72B.3000109@janestcapital.com> <4a051d930711061939p621c0a8ao4472a82973dcc855@mail.gmail.com> Reply-To: caml-list@inria.fr Organization: Erik Conspiracy Secret Labs X-Mailer: Sylpheed 2.4.5 (GTK+ 2.12.0; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Miltered: at discorde with ID 47313862.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ocaml:01 ocaml:01 printf:01 printf:01 wrote:01 wrote:01 caml-list:01 computation:01 lazy:02 lazy:02 argument:02 argument:02 erik:04 erik:04 passing:05 Christopher L Conway wrote: > On 11/6/07, Brian Hurt wrote: > > Also, creating a lazy thunk in Ocaml is expensive (like 140+ clock cycles), > > while passing an argument into a function is cheap- and the common case will > > be that the argument won't need to be evaluated, just passed in. > > What does this mean? Did OCaml become non-strict while I wasn't looking? Ocaml is strict by default and optionally lazy. The code being discussed was this: log (lazy (Printf.printf "%s" (awfully_long_computation ()))) where everything inside (lazy X) is lazy evaluated. Erik -- ----------------------------------------------------------------- Erik de Castro Lopo ----------------------------------------------------------------- "I'd rather not work with people who aren't careful. It's darwinism in software development." -- Linus Torvalds on the linux-kernel list