Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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

For instance...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top