Имеет ли! = Значение в OCaml?

Кажется, это сравнение эквивалентности для некоторых типов, но не для строк.

# 3 != 3;;
- : bool = false
# 3 != 2;;
- : bool = true

Это как и ожидалось.

# "odp" = "odp";;
- : bool = true
# "odp" != "odp";;
- : bool = true
# "odp" <> "odp";;
- : bool = false

Почему"odp" != "odp"&nbsp;оценитьtrue? Что он на самом деле делает? Разве это не должно генерировать ошибку типа?