caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: John Max Skaller <skaller@ozemail.com.au>
To: Basile STARYNKEVITCH <basile@starynkevitch.net>
Cc: caml-list@pauillac.inria.fr
Subject: Re: [Caml-list] Error: Type variables, that can not be generalized?!
Date: Fri, 21 Feb 2003 14:30:16 +1100	[thread overview]
Message-ID: <3E559D48.8030800@ozemail.com.au> (raw)
In-Reply-To: <15957.12915.525441.981424@hector.lesours>

Basile STARYNKEVITCH wrote:


> The compiled unit needs to know the type of its hashtable (I don't
> know why). 


The reason is: the interpreter is building a top level program.
The compiler isn't: it's building a module. That hashtable might
be used by code in another module, and so its type
must be known so external client use can be type checked
against the type of the hashtable.

The only way to use the hashtable from the interpreter is in the top
level and the first such use will (usually) fix the type against
which subsequent uses can be checked, so the type doesn't have to
be fixed until the first use.

[What I said isn't quite precise, for example:

	let h = Hashtble.create 97 in
	Hashtbl.add 1 []
	;;

Here the type *still* isn't fixed even on the first use :=]

BTW: I've always been baffled by the seeminly wrong nomenclature
'generalisation' when in fact unification involves *specialising*
types/type variables. Does it refer to the seeking of the
'most general' unifier -- that is, the most general specialisation?

Error messages like

"The type of this expression, ('_a, `_b) Hashtbl.t,
contains type variables that cannot be generalized"

seem counterintuitive when in fact the problem is
that variables can't be made specific enough.

-- 
John Max Skaller, mailto:skaller@ozemail.com.au
snail:10/1 Toxteth Rd, Glebe, NSW 2037, Australia.
voice:61-2-9660-0850


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


  reply	other threads:[~2003-02-21  3:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-20 19:50 Oliver Bandel
2003-02-20 19:54 ` Basile STARYNKEVITCH
2003-02-21  3:30   ` John Max Skaller [this message]
2003-02-21 16:20     ` Gérard Huet
2003-02-21  0:23 Arturo Borquez

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=3E559D48.8030800@ozemail.com.au \
    --to=skaller@ozemail.com.au \
    --cc=basile@starynkevitch.net \
    --cc=caml-list@pauillac.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).