views:

54

answers:

2

I'm trying to create a type that has multiple type parameters. I know how to make a type with one parameter:

type 'a foo = 'a * int

But I need to have two parameters, so that I can parameterize the 'int' part. How can I do this?

+1  A: 

# type ('a, 'b) couple = 'a * 'b ;;

For instance...

Pascal Cuoq
+3  A: 

The way to do this is:

type ('a, 'b) foo = 'a * 'b

Type parameters aren't curried, so you need to provide them in tuple form as a single parameter. A good example of this is the Hashtbl module:

type ('a, 'b) t

The type of hash tables from type 'a to type 'b.

Thelema