caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Virgile Prevosto <virgile.prevosto@m4x.org>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] let rec and polymorphic functions
Date: Wed, 27 Jun 2007 14:00:54 +0200	[thread overview]
Message-ID: <20070627140054.68bec31a@localhost> (raw)
In-Reply-To: <46824622.2080508@ed.ac.uk>

Le mer 27 jun 2007 12:12:34 CEST,
Jeremy Yallop <jeremy.yallop@ed.ac.uk> a écrit :

> David Allsopp wrote:
> > let rec id x = x
> > and _ = id 0
> > in
> >   id (); (* *** *)
> >   id 1;;
> > 
> This isn't really "the equivalent SML", since the definition of `id
> x' and the application `id 0' aren't in the same recursive group.
> The equivalent in SML would be something like
> 
>     let val rec id = fn x => x
>             and _  = id 0
>         in
>            id ();
>            id 1
>     end
> 
> 
> OCaml seems a little inconsistent here, actually.  The application
> `id 0' is only valid as the rhs of let rec because the compiler can 

Well, it just seems that Ocaml performs type inference before checking
the validity of the recursive definition. If you give a well-typed
term, it will complain about a forbidden rhs of let rec:

        Objective Caml version 3.10.0

#  let rec id = fun x -> x and _foo = id 0 in id 1;;
This kind of expression is not allowed as right-hand side of `let rec'
-- 
E tutto per oggi, a la prossima volta.
Virgile


  parent reply	other threads:[~2007-06-27 12:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070627100004.9E0DABC73@yquem.inria.fr>
2007-06-27 10:24 ` David Allsopp
2007-06-27 11:12   ` Jeremy Yallop
2007-06-27 11:29     ` David Allsopp
2007-06-27 12:00     ` Virgile Prevosto [this message]
2007-06-27 13:00       ` Jeremy Yallop
2007-06-27 13:12   ` Jon Harrop
2007-06-27  8:40 David Allsopp
2007-06-27  9:05 ` [Caml-list] " Jon Harrop
2007-06-27 10:14   ` Arnaud Spiwack

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070627140054.68bec31a@localhost \
    --to=virgile.prevosto@m4x.org \
    --cc=caml-list@yquem.inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).