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 RAA14901; Wed, 7 May 2003 17:35:51 +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 RAA17144 for ; Wed, 7 May 2003 17:35:50 +0200 (MET DST) Received: from h00045a4799d6.ne.client2.attbi.com (h00045a4799d6.ne.client2.attbi.com [65.96.179.155]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id h47FZnT06623 for ; Wed, 7 May 2003 17:35:50 +0200 (MET DST) Received: by h00045a4799d6.ne.client2.attbi.com (Postfix, from userid 500) id 551FF2BBAB; Wed, 7 May 2003 11:40:11 -0400 (EDT) From: Neel Krishnaswami MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16057.10459.204744.884009@h00045a4799d6.ne.client2.attbi.com> Date: Wed, 7 May 2003 11:40:11 -0400 To: "caml-list@inria.fr" Subject: Re: [Caml-list] why the "rec" in "let rec"? In-Reply-To: References: <16057.7459.42552.45637@h00045a4799d6.ne.client2.attbi.com> X-Mailer: VM 7.04 under 21.4 (patch 8) "Honest Recruiter" XEmacs Lucid X-Spam: no; 0.00; neel:01 krishnaswami:01 neelk:01 caml-list:01 disallow:01 bug:01 forbids:99 implemented:01 expressive:01 bindings:01 ocaml:01 rec:01 writes:01 let:04 pointed:04 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hal Daume III writes: > > Both responses so far have pointed out how it's different from jsut 'let', > but I don't think this was the point of the question. Arguably, the > "simplest" way to dealing with: > > > let f x = .. > > let f x = f x > > is to simply disallow bindings like this. I would think that > they're almost always a bug. Especially if the first definition > appears at the top of your file and the second (perhaps you forgot > the "rec" and the body is actually long) appears at the bottom. > Likely it would turn out to be a type error anyway, but why risk it? > > Anyway, I think the question was more along the lines of "why let > the programmer do something like this." I cannot answer that. Unless I misremember, Java has lexical scope, but forbids bindings from shadowing one another. I don't know what relevance this has, except to note that your idea has actually been implemented in a real language. I don't think one can say whether this is helpful or not, because the rest of Java is so much less expressive than Ocaml.... -- Neel Krishnaswami neelk@alum.mit.edu ------------------- 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