Подтвердить что ты не робот

Неожиданные результаты с OCaml! =

Из того, что я могу сказать, = и!= предполагается работать с строками в OCaml. Я вижу странные результаты, хотя я хотел бы лучше понять.

Когда я сравниваю две строки с =, я получаю ожидаемые результаты:

# "steve" = "steve";;
- : bool = true
# "steve" = "rowe";;
- : bool = false

но когда я пытаюсь!= Я этого не делаю:

# "steve" != "rowe";;
- : bool = true
# "steve" != "steve";; (* unexpected - shouldn't this be false? *)
- : bool = true

Может ли кто-нибудь объяснить? Есть ли лучший способ сделать это?

4b9b3361

Ответ 1

!= не является отрицанием =. <> - это отрицание =, которое вы должны использовать:

# "steve" <> "rowe" ;;
- : bool = true
# "steve" <> "steve" ;;
- : bool = false
# 

!= является отрицанием ==, и если вы новичок OCaml, вы не должны использовать ни одно из этих двух. Они могут быть немного сложными, и они официально недоказаны (единственная гарантия состоит в том, что если два значения ==, они =).