caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* specifying the type of an argument with more than one #classpath
@ 2008-03-06  1:52 Peng Zang
  2008-03-06  1:56 ` [Caml-list] " Edgar Friendly
  2008-03-06  2:16 ` Eric Cooper
  0 siblings, 2 replies; 5+ messages in thread
From: Peng Zang @ 2008-03-06  1:52 UTC (permalink / raw)
  To: caml-list

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I am aware that when specifying the type of an argument to a function, one can 
use the "#classpath" notation to specify "any subtype of classpath".

Eg:

class type foo = object
  method foo : string
end;;

# let takesomefoo (x:#foo) = x;;
val takesomefoo : (#foo as 'a) -> 'a = <fun>


However, I cannot figure out how to specify more than one such constraint.  
Eg. I want to specify an argument that is foo-able and bar-able like this:

class type bar = object
  method bar : string
end

# let takesomefooable_and_barable (x:#foo #bar) = x;;
The type constructor bar expects 0 argument(s),
but is here applied to 1 argument(s)


Which shows I'm clearly not syntactically expressing this correctly.  I 
checked the manual and it doesn't seem possible...  How do I do this or 
workaround it?  I am familiar with class definitions which allow you to do 
this:

class ['a] foobar (x:'a) = object
  constraint 'a = #foo
  constraint 'a = #bar
  method getx = x
end;;


But I don't see how to specify such constraints in a normal function on the 
type of an argument.

Is there some simple trick people have found for specifying various type 
constraints on arguments?


Thanks in advance,

Peng
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)

iD8DBQFHz05KfIRcEFL/JewRAjD4AJ9hexh+HUP5h2aavCbCXWR8JoVReQCePBBz
FIXqFDT3NEhLgtQZwrU7E54=
=qonr
-----END PGP SIGNATURE-----


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

end of thread, other threads:[~2008-03-06 12:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-06  1:52 specifying the type of an argument with more than one #classpath Peng Zang
2008-03-06  1:56 ` [Caml-list] " Edgar Friendly
2008-03-06  2:04   ` Peng Zang
2008-03-06  2:16 ` Eric Cooper
2008-03-06 12:02   ` Peng Zang

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