OCamlには2種類の値の比較方法があります。
==, !=
これらの演算子は、右辺と左辺が全く同一のオブジェクトであるかを判定します。==という名前は大抵の言語で使われているので、つい癖で値の比較に使用してしまいそうですが、この演算子はむしろSchemeのeq?, Pythonのisに近いものです。関数型らしいコードを書く上では使うことはほとんど無いでしょう。流派によっては、
let (==) = `Consider_phys_equal let (!=) = `Consider_phys_equal
として、これらの演算子自体を使えなくしてしまうこともあるようです。
=, <>
こちらが値の比較です。ググッてこのページにたどり着いた人が求めている演算子はたぶんこちらでしょう。
2つの演算子の挙動の違いは、以下のコードを見ればわかると思います。
type t = T of string # let x = T "yeah";; # let y = T "yeah";; # x = y;; (* xとyは値としては等しい *) - : bool = true # x <> y;; - : bool = false # x == y;; (* xとyは別なオブジェクト *) - : bool = false # x != y;; - : bool = true