Неожиданные результаты с OCaml! = - PullRequest
16 голосов
/ 16 июня 2010

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

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

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

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

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

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

1 Ответ

19 голосов
/ 16 июня 2010

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

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

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

...