Haskell と Scala には依存型に関する多くの情報があります。OCaml の場合、それほど多くはありません。OCamlでこれを達成する方法についてのコーディング例を提供するのに十分なスキルを持っている人はいますか? (可能であれば) もちろん (放棄された) Dependent MLはありますが、そのようなものを「通常の」OCaml コードに組み込むことはできないようです。
基本的に、私がやりたいことは、コードのようなものを削除しassert(n > 0)
て、コンパイル時にチェックすることです。
編集
補足として、OCaml Hybrid Contract Checkingブランチに言及する価値があります。これは、依存型システムのニーズの一部を満たすことができます。あなたの代わりにassert(n > 0)
契約書を書きます:
contract f = {x : x > 0} -> int
let f x = x + 1
let dummy_variable = f (-1) (* Won't compile *)
編集 2 : これを読んでいる人にとって、F* は依存型を持つ興味深い ML のような言語だと思います。