caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Question on polymorphic typing for curried functions
@ 2007-08-24 19:43 Christopher Kauffman
  2007-08-24 20:25 ` [Caml-list] " Jon Harrop
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Christopher Kauffman @ 2007-08-24 19:43 UTC (permalink / raw)
  To: OCaml

I am looking for a bit of information on the behavior of curried functions wrt 
polymorphic arguments. For instance, in the following example, using a curried 
function seems to lose the nice polymorphism that I desire.

# let genf f a b = f a b;;
val genf : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c = <fun>
# let specf = genf (<);;
val specf : '_a -> '_a -> bool = <fun>
# specf 1 2;;
- : bool = true
# specf;;
- : int -> int -> bool = <fun>

An alternative definition for the specific 'specf' maintains polymorphism of its 
arguments.

# let specf a b = genf (<) a b;;
val specf : 'a -> 'a -> bool = <fun>
# specf 1 2;;
- : bool = true
# specf 1.0 2.0;;
- : bool = true
# specf;;
- : 'a -> 'a -> bool = <fun>

Is there a set of rules or guidelines that determine when argument types are 
specialized versus staying polymorphic?

Cheers,
Chris


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

end of thread, other threads:[~2007-08-24 23:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-24 19:43 Question on polymorphic typing for curried functions Christopher Kauffman
2007-08-24 20:25 ` [Caml-list] " Jon Harrop
2007-08-24 21:04 ` Julien Moutinho
2007-08-24 23:32 ` Harrison, John R

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