caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Quantifier in the type
@ 2008-10-15 15:03 Dawid Toton
  2008-10-15 18:18 ` [Caml-list] " Florent Monnier
  2008-10-16 23:06 ` Florent Monnier
  0 siblings, 2 replies; 6+ messages in thread
From: Dawid Toton @ 2008-10-15 15:03 UTC (permalink / raw)
  To: caml-list

Just an elementary question.

I put 'a in the interface:
val fu : 'a -> 'a
and int in the implementation:
let fu x = x + 1

So I have universal quantification: for any type 'a function fu can 
consume the argument. So my implementation doesn't comply with that 
universal quatification. And the message I get is following:

Values do not match: val fu : int -> int is not included in val fu : 'a 
-> 'a

So the declaration of value in mli file is called simply a 'value'. Is 
it intentional?
I thought that value and it's declaration are separate notions?

My reading of " val fu : 'a -> 'a " is:
 some partiular value vvv that belongs to set of values that satisfy  
"forall 'a : (vvv can be used with ('a -> 'a) type)"

But if I write
let (bar : 'a -> 'a ) = (fun x -> x + 1)
I create a value that belongs to set "exists 'a : (vvv can be used with 
('a -> 'a) type)"
So it's the other quantifier.

I think that the quantifier has to be part of type, since a type is set 
of values (and the quantifier plays important role when describing some 
of such sets).
So my question is: since we see the same string " 'a -> 'a " that refers 
to different types in different contexts, what are the rules? How is 
type definition in OCaml translated to a type?

Dawid


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

end of thread, other threads:[~2008-10-17 11:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-15 15:03 Quantifier in the type Dawid Toton
2008-10-15 18:18 ` [Caml-list] " Florent Monnier
2008-10-16 15:33   ` Dawid Toton
2008-10-17  8:11     ` Tiphaine Turpin
2008-10-17 11:40       ` Dawid Toton
2008-10-16 23:06 ` Florent Monnier

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