Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] why the "rec" in "let rec"?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: David Brown <caml-list@d...>
Subject: Re: [Caml-list] why the "rec" in "let rec"?
On Wed, May 07, 2003 at 07:57:13AM -0700, Hal Daume III wrote:

> > 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.

I hope it doesn't get disabled.  There are some very common idioms that
use this type of declaration.

  let ... =
    let a = ... a ... in
    let a = ... a ... in
    let a = ... a ... in

This way, you can build up the value of a, almost like they were
assignments, but without the problems associated with mutable values.
It would be silly to have to keep thinking of new names for the variable
each time you did this.

I have also made wrappers for functions for debugging purposes, and
found it very convenient to just be able to call the old definition.

Dave Brown

-------------------
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