Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Why must types be always defined at the top level?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Brian Hurt <bhurt@s...>
Subject: RE: [Caml-list] Why must types be always defined at the top level?
On Thu, 24 Jun 2004, John Hughes wrote:

> I have one more question, though: 
> 5. Why can I no longer type-annotate things I've written, so that
> let f x y z = (x = y) & (y = z)
> defines a function applicable to ALL types? I actually *liked*
> being able to say something like
> let f x y z:int = (x = y) && (y = z)

This annotates that f returns an int.  You need to use parens to make the 
:int bind to z and not to f.  This works:

# let f x y (z:int) = (x = y) && (y = z);;
val f : int -> int -> int -> bool = <fun>

This is another one of those shift-reduce conflicts that annoy me.

"Usenet is like a herd of performing elephants with diarrhea -- massive,
difficult to redirect, awe-inspiring, entertaining, and a source of
mind-boggling amounts of excrement when you least expect it."
                                - Gene Spafford 

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: