I was browsing ocaml's standard library, and came across this code in the map.ml file.

module type S =
  sig
    type key
    type +'a t
    val empty: 'a t'

I'm wondering why there is type +'a t, and why the author use it instead of simply 'a t.
Its behaviour is strange and I can't deduce the usage of it.

# type +'a t = 'a list;;
type 'a t = 'a list
# type +'a t = +'a list;;
Characters 13-14:
  type +'a t = +'a list;;
               ^
Error: Syntax error

Thanks

Edit
Report