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