問題タブ [ocaml-dune]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
332 参照

ocaml - 砂丘: ライブラリをビルドして別のプロジェクトでアクセスし、アクセスできないプライベート モジュールまたは実装モジュールを非表示にするか、作成します。

OCaml プロジェクトの構築にDuneを使用していますが、他のプロジェクトで再利用するためのスタンドアロン ライブラリを構築したいと考えています。

ライブラリのルート フォルダは で、ライブラリは(after )mylibで初期化されました。dune init lib mylib srccd mylib

mylibプロジェクトのルートであるのディレクトリ ツリーは次のとおりです。

ファイルの内容は次のとおりです。

mylib/砂丘プロジェクト:

mylib/src/砂丘:

mylib/src/priv.ml :

mylib/src/mymodule.mli :

mylib/src/mymodule.ml :

コンテキストを示し、このおもちゃの例の各ファイルの内容を示した後、質問は次のようになります。

  1. mylibライブラリをビルドして別の別のプロジェクトで使用するにはどうすればよいですか?

(たとえば、別のプロジェクトでは、次のようにライブラリを使用します。

また

)

Dune では、実行可能ファイルが与えられた場合、ライブラリがOpamで公開されている場合、ライブラリを使用するmainために次のduneファイルを記述します。mylib

砂丘:

  1. ライブラリを正常にビルドして別のプロジェクトにリンクした後、一部のモジュールを非表示または非表示にするにはどうすればよいですか? たとえば、以前のおもちゃのライブラリが与えられた場合mylib、モジュールを公開せずにアクセスできないようにしたいと思いますPriv( Java/C#の保護/内部クラスのように、のPrivモジュール内でのみ使用できるようになります)。mylib

</p>

Real World OCamlCornell CS3110 テキストブックDune documentationOCaml Learnで検索してみましたが、深くネストされていない限り、何も見つかりませんでした。

ご協力ありがとうございます。何かを明確に説明していない場合は、お問い合わせください。より適切に説明できるように努めます。

0 投票する
1 に答える
153 参照

ocaml - Ocaml utop は Big_int を認識しません (しかし認識します)

Big_int次のように、モジュールを使用するコードがいくつかあります。

ただし、これを utop でコンパイルすると(いくつかの警告を回避するためdune utop --releaseに使用します)、次のエラーが発生します。release

Error: Required module `Big_int' is unavailable

私はそれについて読み、「 Big_intはもはや OCaml ディストリビューションの一部ではありません。それはザリスに置き換えられました。まあ、私はそれを知っていますが、まだ使用できることも知っていますBig_int.

どうすればそれを知ることができますか? 重要なのは、エラーのない他のファイルから始めutopて、一度開いたBig_int場合、後悔しないということです。

utop # open Big_int;;

そこに来たらBig_int.、 のようにmy をオートコンプリートしBig_int.add_big_intます。そのためBig_int、どこかに存在し、認識されます (VSCode もオートコンプリートします)。

わからないことがあります。何か助けはありますか?