2010-06-16 2 views
16

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

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

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

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

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

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

ответ

19

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

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

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

+2

Вопрос некоторое время покрывает некоторые тонкости. http://stackoverflow.com/questions/1412668/does-have-meaning-in-ocaml – nlucaroni

Смежные вопросы