問題タブ [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.
ocaml - 砂丘: ライブラリをビルドして別のプロジェクトでアクセスし、アクセスできないプライベート モジュールまたは実装モジュールを非表示にするか、作成します。
OCaml プロジェクトの構築にDuneを使用していますが、他のプロジェクトで再利用するためのスタンドアロン ライブラリを構築したいと考えています。
ライブラリのルート フォルダは で、ライブラリは(after )mylib
で初期化されました。dune init lib mylib src
cd mylib
mylib
プロジェクトのルートであるのディレクトリ ツリーは次のとおりです。
ファイルの内容は次のとおりです。
mylib/砂丘プロジェクト:
mylib/src/砂丘:
mylib/src/priv.ml :
mylib/src/mymodule.mli :
mylib/src/mymodule.ml :
コンテキストを示し、このおもちゃの例の各ファイルの内容を示した後、質問は次のようになります。
mylib
ライブラリをビルドして別の別のプロジェクトで使用するにはどうすればよいですか?
(たとえば、別のプロジェクトでは、次のようにライブラリを使用します。
また
)
Dune では、実行可能ファイルが与えられた場合、ライブラリがOpamで公開されている場合、ライブラリを使用するmain
ために次のdune
ファイルを記述します。mylib
砂丘:
- ライブラリを正常にビルドして別のプロジェクトにリンクした後、一部のモジュールを非表示または非表示にするにはどうすればよいですか? たとえば、以前のおもちゃのライブラリが与えられた場合
mylib
、モジュールを公開せずにアクセスできないようにしたいと思いますPriv
( Java/C#の保護/内部クラスのように、のPriv
モジュール内でのみ使用できるようになります)。mylib
</p>
Real World OCaml、Cornell CS3110 テキストブック、Dune documentation、OCaml Learnで検索してみましたが、深くネストされていない限り、何も見つかりませんでした。
ご協力ありがとうございます。何かを明確に説明していない場合は、お問い合わせください。より適切に説明できるように努めます。
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 もオートコンプリートします)。
わからないことがあります。何か助けはありますか?