Константа 3
имеет встроенный тип int
, который не относится к типу int
, который находится в области видимости. Таким образом, верхний уровень добавляет число, чтобы обозначить этот факт. В противном случае все может стать очень запутанным. Т.е. вы можете получить сообщения типа «ожидалось значение типа int, но это значение типа int». С тегом /n
он более четко говорит: «ожидалось значение типа int / n (один тип int), но это значение типа int / m (другой тип int)»
Похоже, это поведение было добавлено в OCaml 4.08.0. Вы можете найти обсуждение этой функции здесь: https://github.com/ocaml/ocaml/pull/1120
Обновление
Вы должны показать свою версию OCaml. Эта функция была добавлена достаточно недавно, так что вы можете встретить уровни выше как с этой функцией, так и без нее.
В любом случае, оба ваших примера используют нотацию int/n
в моих тестах с использованием OCaml 4.10.0
$ ocaml
OCaml version 4.10.0
# 3;;
- : int = 3
# type int;;
type int
# type a;;
type a
# 3;;
- : int/2 = 3
$ ocaml
OCaml version 4.10.0
# 3;;
- : int = 3
# type int;;
type int
# 3;;
- : int/2 = 3
(Возможно также, что это поведение стало более согласованным в OCaml 4.10.0.)