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 IAA18523; Fri, 27 Dec 2002 08:37:18 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id IAA18545 for ; Fri, 27 Dec 2002 08:37:17 +0100 (MET) Received: from swordfish ([216.241.35.41]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id gBR7bFH29213 for ; Fri, 27 Dec 2002 08:37:16 +0100 (MET) Received: from matt by swordfish with local (Exim 3.35 #1 (Debian)) id 18Rp3N-0001QT-00 for ; Fri, 27 Dec 2002 00:37:09 -0700 Date: Fri, 27 Dec 2002 00:37:09 -0700 From: Matt Gushee To: caml-list@inria.fr Subject: Re: [Caml-list] Guards vs. conditionals Message-ID: <20021227073709.GD608@swordfish> Reply-To: Matt Gushee Mail-Followup-To: caml-list@inria.fr References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.27i Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Thu, Dec 26, 2002 at 09:55:09PM -0600, Gurr, David (MED, self) wrote: > try "ocamlc -dlambda foo.ml" Wow. That outputs something that looks a lot like LISP. And -dlambda seems to be undocumented, at least in the man page and the HTML user's manual. What is it intended for? Just in case anyone's interested, here are the two programs and the results of calling the above command on them: -- foo1.ml ---------------------------------------------------------- let foo = function | i when i >= 500 -> true | i -> false in for i = 1 to 100000 do ignore (foo (Random.int 1000)) done --------------------------------------------------------------------- bash-2.05a$ ocamlc -dlambda foo1.ml (setglobal Foo1! (seq (let (foo/56 (function i/57 (if (>= i/57 500) 1a 0a))) (for i/59 1 to 100000 (ignore (apply foo/56 (apply (field 4 (global Random!)) 1000))))) (makeblock 0))) -- foo2.ml ---------------------------------------------------------- let foo i = if i >= 500 then true else false in for i = 1 to 100000 do ignore (foo (Random.int 1000)) done --------------------------------------------------------------------- bash-2.05a$ ocamlc -dlambda foo2.ml (setglobal Foo2! (seq (let (foo/56 (function i/57 (if (>= i/57 500) 1a 0a))) (for i/58 1 to 100000 (ignore (apply foo/56 (apply (field 4 (global Random!)) 1000))))) (makeblock 0))) I note that the output is identical except on the fourth line: i/59 vs. i/58 . What does that notation represent, by the way? -- Matt Gushee When a nation follows the Way, Englewood, Colorado, USA Horses bear manure through mgushee@havenrock.com its fields; http://www.havenrock.com/ When a nation ignores the Way, Horses bear soldiers through its streets. --Lao Tzu (Peter Merel, trans.) ------------------- 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