問題タブ [ocaml-batteries]

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 投票する
2 に答える
1598 参照

ocaml - OCaml のシンボルが理解できない

私は最近、いくつかの基本的な資料とOCamlで書かれたプロジェクトによってOCamlを学んでいます。しかし、OCaml のいくつかの記号がわかりません。例えば:

これらの記号 ` はどういう意味ですか?
また、他の記号も理解するのが難しいです:

  • |>
  • _

OCaml Manualには何も見つかりません。誰かが上記の記号について詳しく説明できますか? または、私にいくつかの資料をお勧めしますか?

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

ocaml - OCamlで派生とバッテリーを同時に使用するには?

したがって、基本的に私のプロジェクトでは、batteries(forFile.lines_ofおよびその他の関連関数) とderiving(for Show.show) を同時に使用する必要があります。

ただし、 Macにopamパッケージをインストールするために使用するderivingと、最初にパッケージが削除されbatteries、その後インストールが開始されるようderivingです..

batteriesを使用してインストールするopamと、最初に削除されderivingます...

私の設定に何か問題がありますか..?それとも普通のケースですか..?batteriesでは、とderivingを同時に使用するにはどうすればよいですか?

ここに画像の説明を入力

0 投票する
3 に答える
133 参照

ocaml - OCamlバッテリーが値を上書きしないようにする方法

パッケージ Batteries.Num は関数 (+)、(-) をオーバーライドします。したがって、コンパイラは次の単純なコードでエラーを返します。

ファイル "a.ml"、3 行目、8 ~ 9 文字目: エラー: この式は int 型ですが、Batteries.Num.num = Num.num 型の式が予期されていました

「ocamlfind ocamlc -package battery a.ml」でコンパイルします。

編集: Pervasives.(+) を使用するか、Num をローカルで開くことができることはわかっています。

しかし、最も単純な _tags ファイルを使用して、このプログラムを ocamlbuild で正常にコンパイルできます: <*>: pkg_batteries, package(batteries), package(num)

魔法はどこ?ocamlbuild が Makefile で行うようにコンパイルするにはどうすればよいですか?

編集:解決策を見つけました。実際には2つのバージョンのバッテリー(1.4と2.2)があり、ocamlfindはコマンドラインでバージョン2.2を、ocamlbuildで1.4を提供しました。どうしてか分かりません。バッテリーの初期のバージョンはモジュール Num を再定義しなかったと思います (ただし、BatNum を使用する必要がありました)。そのため、古いバージョンでは問題は発生しません。答えてくれてありがとう。

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

ocaml - バッテリーに依存するファイルを ocamltop にロードする -- インターフェースが一致しない

これは簡単な ocaml ファイルです。これは、Batteries ライブラリを使用するプログラムを ocamltop にロードする方法を理解してもらうためのものです。

batteryassault.ml

これをバイトコードにコンパイルします

結果は batteryassault.cmo と batteryassault.cmi になり、エラーも警告もありません。次に、バッテリー駆動の ocamltop を起動します。

最後に、ファイルを ocamltop にロードするには:

そして、エラーが発生します。

ファイル batteryassault.cmo と /usr/lib/ocaml/batteries/batteries.cma はインターフェース Batteries について意見が一致していません

Ubuntu がバッテリー 2.2.1 をインストールしている可能性があると思いますが、何らかの理由で (merlin をインストールしていますか?) opam フォルダーにバッテリー 2.3.1 がインストールされています。さらに、上記のようにバッテリーを使用して ocamltop を起動すると、 ocamltop が 2.2.1 バージョンを使用していることを示します。さらに、でコンパイル

ocamlc は間違いなく opam のライブラリ、つまり 2.3.1 バージョンを使用していることがわかります。

だから私の質問は次のとおりです。/回避策は何ですか?

0 投票する
3 に答える
4276 参照

functional-programming - OCamlで配列要素のインデックスを見つける方法

ocaml で整数配列要素のインデックスを見つけようとしています。これを再帰的に行う方法。コード例:let a = [|2; 3; 10|];; 配列 a のインデックス 3 を返したいとします。どんな助けでも感謝します。OCaml プログラミングは初めてです

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

ocaml - ocamlバッテリーがバインドされていないトップループエラー

Ubuntu 14.04 の ropc/bap/INSTALL の指示に従って、 ropc https://github.com/pakt/ropcに必要な bap をインストールしようとしています。これらのコマンドを正常に実行しました。

ここで、bap ディレクトリ内に作成すると、次の Unbound module toploop エラーが発生します。これは、バッテリーと ocaml の間の互換性の問題のようです。どうすればこれを回避できますか? 詳しくは画像をご覧ください

アップロードされた画像

-I +compiler-libs をどこかに追加する必要があることを読みました。しかし、正確にはどこですか?私は ocaml を使用した経験がなく、ropc をうまく構築しようとしています。