全部モナドで何の不便もないよ
状態を持つオブジェクトも普通に扱える

OCamlでやりたければ、OCamlの流儀に従うと良いんじゃね