Кажется, это сравнение эквивалентности для некоторых типов, но не строк.
# 3 != 3;;
- : bool = false
# 3 != 2;;
- : bool = true
Это как и ожидалось.
# "odp" = "odp";;
- : bool = true
# "odp" != "odp";;
- : bool = true
# "odp" <> "odp";;
- : bool = false
Почему "odp" != "odp"
оценивается до true
? Что это на самом деле делает? Не следует ли генерировать ошибку типа?