2010-06-16 19 views
16

Z tego co wiem, = i! = Powinien działać na łańcuchach w OCaml. Widzę jednak dziwne wyniki, które chciałbym lepiej zrozumieć.Nieoczekiwane wyniki z OCaml! =

Kiedy porównać dwa ciągi z = i uzyskać wyniki Spodziewam:

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

ale gdy próbuję = nie wiem:

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

Może ktoś wyjaśnić? Czy jest lepszy sposób to zrobić?

Odpowiedz

19

!= nie jest zaprzeczeniem =. <> jest negacją = że należy użyć:

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

!= jest negacją ==, a jeśli jesteś początkujący OCaml, nie powinno być przy użyciu jednego z tych dwóch jeszcze. Mogą być trochę trudne i są oficjalnie niedookreślone (jedyną gwarancją jest to, że jeśli dwie wartości to ==, są to =).

+2

Pytanie od pewnego czasu obejmuje niektóre subtelności. http://stackoverflow.com/questions/1412668/does-have-meaning-in-ocaml – nlucaroni

Powiązane problemy