caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Type generalization problem
@ 2011-08-14 13:46 Ruslan Ledesma Garza
  2011-08-14 13:55 ` Gabriel Scherer
  0 siblings, 1 reply; 3+ messages in thread
From: Ruslan Ledesma Garza @ 2011-08-14 13:46 UTC (permalink / raw)
  To: OCaml List

Dear list,

Consider the following OCaml session.

        Objective Caml version 3.12.0

# let f : 'v . 'v -> 'v = fun x -> x;;
val f : 'a -> 'a = <fun>
# let g : 'v . 'v -> 'v = (fun x -> x) (fun x -> x);;
Error: This definition has type 'a -> 'a which is less general than
         'b. 'b -> 'b
# 

Why doesn't OCaml generalize the type 'a -> 'a? According to the typing rules in "Principal type-schemes for functional programs" ( http://portal.acm.org/citation.cfm?id=582176 ), the type 'a -> 'a can be generalized.

Something similar happens in the following OCaml session.

        Objective Caml version 3.12.0

# let f : 'v . 'v -> 'v = fun x -> x;;
val f : 'a -> 'a = <fun>
# let h = f f;;
val h : '_a -> '_a = <fun>
# h 1;;
- : int = 1
# h h;;
Error: This expression has type int -> int
       but an expression was expected of type int
# 

I want the type of h to be \forall 'a . 'a -> 'a.         :'(

Best regards,
Ruslán.




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-08-14 14:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-14 13:46 [Caml-list] Type generalization problem Ruslan Ledesma Garza
2011-08-14 13:55 ` Gabriel Scherer
2011-08-14 14:03   ` Ruslan Ledesma Garza

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