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 LAA05531; Wed, 28 Jul 2004 11:36:32 +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 LAA05395; Wed, 28 Jul 2004 11:36:31 +0200 (MET DST) Received: from smtp1.adl2.internode.on.net (smtp1.adl2.internode.on.net [203.16.214.181]) by nez-perce.inria.fr (8.12.10/8.12.10) with ESMTP id i6S9aSEV015614; Wed, 28 Jul 2004 11:36:29 +0200 Received: from [192.168.1.200] (ppp205-61.lns1.syd3.internode.on.net [203.122.205.61]) by smtp1.adl2.internode.on.net (8.12.9/8.12.9) with ESMTP id i6S9aI4Y018660; Wed, 28 Jul 2004 19:06:19 +0930 (CST) Subject: Re: lazyness in ocaml (was : [Caml-list] kprintf with user formatters) From: skaller Reply-To: skaller@users.sourceforge.net To: Pierre Weis Cc: daniel.buenzli@epfl.ch, caml-list In-Reply-To: <200407280913.LAA04589@pauillac.inria.fr> References: <200407280913.LAA04589@pauillac.inria.fr> Content-Type: text/plain Message-Id: <1091007376.5870.909.camel@pelican.wigram> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-4) Date: 28 Jul 2004 19:36:16 +1000 Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 4107739C.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; lazyness:01 caml-list:01 kprintf:01 formatters:01 sourceforge:01 2004:99 pierre:01 weis:01 2004:99 pierre:01 weis:01 expr:01 expr:01 f'':01 parlance:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Wed, 2004-07-28 at 19:13, Pierre Weis wrote: > > On Wed, 2004-07-28 at 17:26, Pierre Weis wrote: > > > > > There is nothing such as your ``substitution principle'' in Caml, > > > except if we restrict the language to truly trivial expressions (as > > > soon as expressions may incoporate basic operators such as the integer > > > addition your ``principle'' does not stand anymore). > > > > I thought: > > > > let x = expr in f x > > > > and > > > > f expr > > > > are identical in all circumstances in Ocaml > > for all terms 'expr', I must have missed > > something .. do you have a counter example? > > We have to precisely state the statement here: > > - if you mean that ``f'' is just an ident (more precisely, a > lowercase ident in the Caml parser parlance) bound to a unary > function, then the two expressions are equivalent. f is a function constant, but i didn't specify unary.. > - if f can have more than one argument, then the two expressions are > obviously not equivalent since the first one fixes the order of > evaluation when the second does not. OK, thanks. You are right. Given let x = f e in x y and (f e) y might evaluate e and y in different orders. Sorry -- you did already point this out too, i just didn't see it :) -- John Skaller, mailto:skaller@users.sf.net voice: 061-2-9660-0850, snail: PO BOX 401 Glebe NSW 2037 Australia Checkout the Felix programming language http://felix.sf.net ------------------- 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