caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Basile STARYNKEVITCH <basile@starynkevitch.net>
To: caml-list@pauillac.inria.fr
Subject: [Caml-list] Error: Type variables, that can not be generalized?!
Date: Thu, 20 Feb 2003 20:54:27 +0100	[thread overview]
Message-ID: <15957.12915.525441.981424@hector.lesours> (raw)
In-Reply-To: <20030220195004.GA1030@first.in-berlin.de>

>>>>> "Oliver" == Oliver Bandel <oliver@first.in-berlin.de> writes:

    Oliver> Hello, I'm teseting my code in the toplevel, and see no
    Oliver> problems.  I use the ocamlc-compiler and it produces this
    Oliver> message:


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

The type ('_a, `_b) Hashtbl.t means:
   there exist a type '_a, there exist a type '_b, such that 
   the displayed type is hashtable of key '_a and value '_b

The type ('a,'b) Hashtbl.t means:
   for any type 'a and any type 'b, the displayed type is an hashtable
   of key 'a & value 'b

    Oliver> The line, where the problem occured was an unused
    Oliver> Hashtable-Creation.


    Oliver> The line was: let entry_hash = Hashtbl.create 100000

    Oliver> The added line, which lets the error-message disappears
    Oliver> was:

    Oliver>    Hashtbl.add entry_hash "foo" "bar"


    Oliver> Any hints, ewhat the problem is?

The compiled unit needs to know the type of its hashtable (I don't
know why). An alternative was to code:

    let entry_hash = 
      ((Hashtbl.create 100000) : ((string,string)  Hashtbl.t)

this means that you explicitly cast the type. The compiler then infers
other type taking into acount your explicit type.

In practice I find useful to explicitly cast like above the type of
every hashtable I create.


-- 

Basile STARYNKEVITCH         http://starynkevitch.net/Basile/ 
email: basile<at>starynkevitch<dot>net 
alias: basile<at>tunes<dot>org 
8, rue de la Faïencerie, 92340 Bourg La Reine, France
-------------------
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-20 19:54 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 [this message]
2003-02-21  3:30   ` John Max Skaller
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=15957.12915.525441.981424@hector.lesours \
    --to=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).