caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jacques Garrigue <garrigue@math.nagoya-u.ac.jp>
To: Mark.Shinwell@cl.cam.ac.uk
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Type inference question
Date: Tue, 26 Apr 2005 22:54:13 +0900 (JST)	[thread overview]
Message-ID: <20050426.225413.112628332.garrigue@math.nagoya-u.ac.jp> (raw)
In-Reply-To: <20050426131907.GA10841@three-tuns.net>

From: Mark Shinwell <Mark.Shinwell@cl.cam.ac.uk>

> However, in the Marshal example above, we have
> 
> 	Marshal.from_channel stdin []
> 
> in the first part of the "let".  In the SML terminology, this is not a
> "nonexpansive expression"[*] (unlike "fun x -> x").  Therefore, I would
> have thought that the appearance of such an expression here would
> prohibit generalisation (in order to prevent possible unsoundness in the
> presence of mutable state).  This is presumably not the case in OCaml:
> can someone explain why?

Because ocaml now uses an improvement of the so-called "value restriction".
Rather than refusing to generalize any variable in expansive
expressions, it generalizes covariant ones, as they cannot be
used in an unsound way.
(See "Relaxing the value restriction" at
 http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/papers/)

What we see here is a consequence of that for functions which
are known as typing holes: any function that returns a totally
unconstrained result (as input_value or Obj.magic) allows this result
to be generalized. Actually, for Obj.magic this is a good thing: you
sometimes want the result to be polymorphic (this is not a real
function anyway). For input_value this is subject for discussion, but
anyway this function is a glaring hole in the type system... maybe we
should have a way to explicitly require its result to be annotated
with a ground type!

Jacques Garrigue


      parent reply	other threads:[~2005-04-26 13:54 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-26 11:15 Julien Verlaguet
2005-04-26 12:00 ` [Caml-list] " Jean-Christophe Filliatre
2005-04-26 13:19   ` Mark Shinwell
2005-04-26 13:41     ` Andreas Rossberg
2005-04-26 13:45       ` Mark Shinwell
2005-04-26 13:54     ` Jacques Garrigue [this message]

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=20050426.225413.112628332.garrigue@math.nagoya-u.ac.jp \
    --to=garrigue@math.nagoya-u.ac.jp \
    --cc=Mark.Shinwell@cl.cam.ac.uk \
    --cc=caml-list@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).