問題タブ [js-of-ocaml]

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 に答える
504 参照

macos - js_of_ocaml.ppx が見つからない

js_of_eliom を実行しようとしていますが、ppx_deriving がないようです。これは、make を実行したときに表示されるメッセージです。

そして、ocamlfind クエリ js_of_ocaml.ppx を実行すると、次のようになりました。

しかし、私はppx_derivingをインストールしました.opamリストはそれを示しています:

私は el capitan(10.11) を使用して mac osx で実行しています。なぜこれが起こっているのでしょうか?

編集

申し訳ありませんが、js_of_ocaml もインストールされています。これは私の ocamlfind に表示されます。

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

javascript - js_of_ocaml によって生成された関数を呼び出す方法は?

私は JavaScript が初めてで、使用しようとしていますjs_of_ocaml

私は最初に非常に簡単に書いたcubes.ml

次に、それを遵守しました:

次に、JavaScript ファイルを生成します。

これが生成されたcubes.jsです。そのファイルには名前が見つからない1234か、関数名が見つからないことに注意してください。simple

で生成されたものを呼び出すHome.js関数が必要な別の JavaScript ファイルがあります。しかし、私はそれを書く方法がわかりません。誰でも助けてもらえますか?callSimplecubes.js

編集1:

@EdgarAroutiounian が提案した解決策を試しました。

コンパイルはしましたが、正しい出力が返されませんでした: ここに画像の説明を入力

私が書く場合home.js

最初の行は を返しfunction (a){return p(c,aM(b,a))}、2 行目は を返します0。それらは私が期待するものではありません。

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

ocaml - ocaml、camlp4、ppx、node、js_of_ocaml、ocamlbuild に互換性を持たせる

とをインストールnpmした後node、OCaml ファイルをコンパイルするとjs_of_ocamlエラーが発生したため、次のようにしましたopam switch reinstall system

ocamlfindその後、もう機能しないことに気付きました:

PS:node --version与えるv6.1.0; npm --version与える3.8.6; ocaml -versionを与えThe OCaml toplevel, version 4.03.0ます。 js_of_ocaml --versionでしたが2.7、落札後、opam swtich reinstall systemお譲り致し-bash: /Users/softtimur/.opam/system/bin/js_of_ocaml: No such file or directoryます。

これらすべてのパッケージに互換性を持たせるために何をすべきか知っている人はいますか?


以前:npmとをインストールした後node、実行する前のコンパイル エラーは次のopam switch reinstall systemとおりです。

別の方法でもエラーが発生しました:


最初に: 私の最初の目標は、次のように記述してコンパイルするcubes.mlことです。1) Web で呼び出すことができる JS 関数を作成するために OCaml 関数をラップします。2) OCaml 関数とバイトコードは、Linux のコマンドラインでテストできます。

cubes.ml以下のとおりであります:

次に、を返すocamlfind ocamlc -package js_of_ocaml.ppx -linkpkg cubes.ml -o T必要があるものを生成するT必要があります。また、 の関数が他の JS または HTML ファイルから適切に呼び出されるように生成する必要があります。./Thellojs_of_ocaml T -o cubes.jscubes.jsjsOneArgumentcubes.js

パッケージを台無しにする前に、が./T返されたので、 、などをUnimplemented Javascript primitive caml_pure_js_expr!インストールしました...npmnode

0 投票する
2 に答える
491 参照

javascript - 簡単なコマンドライン OCaml スクリプトを Javascript にコンパイルする方法

Sys.argv.(1)計算を実行し、結果を stdout に出力する単純なコマンドライン OCaml アプリケーションがあります。を使用してJavascriptにコンパイルできますが、未定義であることjs_of_ocamlに関する多くのエラーが発生します。caml_ml_output_charprintfs をスタブ化してこれらのエラーを修正したため、実行されますが、実行中に Firefox がフリーズします。

単純な OCaml コマンドライン スクリプトを Javascript ベースの Web ページにきれいにコンパイルするにはどうすればよいですか? フォークされたバージョンを維持したり、ブラウザーをフリーズしたりせずに?

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

js-of-ocaml - レコードを返す OCaml 関数をラップする

OCaml 関数を定義しましたmanipulate: string -> string。そして、それをラップして JS 関数を作成しますjsManipulate

manipulateここで、単なる文字列ではなく、より多くの情報を返してもらいたいと考えています。レコードを返したい: manipulate: string -> myrecordwhere myrecord = { result: string; info_1: int; info_2: bool }in OCaml format.

この場合、manipulateJS 文字列から JS レコード (またはオブジェクト?) も返す JS 関数を作成するためにラップする方法を知っている人はいますか?

manipulatePS: JS オブジェクトを構築するために、(3 回ではなく) 1 回だけ呼び出したいと思います。

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

js-of-ocaml - Eliom クライアント コードから外部 Js lib を呼び出す

私は今、Eliom を使って何ができるか試しています。eliom クライアント コードから外部の JavaScript ライブラリを呼び出したいと考えています。私が試しているコード例は次のとおりです。

単純な JavaScript と同等:

OCaml コードから Three.js への単純な呼び出し。現在、構文についてはまだ 100% 確信が持てませんが、Three.js をロードする前にこのコードが実行されるため、THREE が未定義であることがわかります。

1) js_of_ocaml によって生成されたファイルの前に js ファイルを含めます。または 2) 生成された js ファイルに Three.js を含めます。または3)他のオプション?

現在、ページは次のように生成されています。

前もって感謝します

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

javascript - 非同期 JS 関数をラップして OCaml で使用することは可能ですか?

js_of_ocamlを使用して JS 関数をラップし、OCaml 内で呼び出すことができます。JS 関数が非同期の場合 (つまり、Promise が含まれていて時間がかかる場合) は、動作する例を作成できません。

JSfunラップしたい非同期JS関数は以下の通りです。変数xは 2 秒後に設定され"here"、これが私が返したい値です。

JSfunJS を正常に呼び出して"runJS here"、期待どおりに取得できました。

しかし、OCaml でこの連鎖を真似するのは困難です。JSfunOCaml でラップするには、以下を使用する必要があるようです:

そして、私はこのように呼び出す以外に考えがありません:

当然のことながら、これは機能しません:呼び出され"inside setTimeout"たことを証明する printが表示さJSfunれますが、戻り値はありません。

ここにjsfiddleがあります。また、同期 JS 関数をラップする実際の例も作成します。OCaml では、ラッピングは次のとおりです。

それで、誰かが解決策、アイデア、または回避策を持っていますか?

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

d3.js - 融合された getter-setter 関数のラッピング

jooc を使用してd3-forceのサブセットをラップするのに問題があります。ライブラリはオブジェクトのプロパティを使用せず、代わりに融合された getter-setter 関数を実装します。

OCaml で同じ種類のポリモーフィズムをエミュレートする方法を見つけたいと思います。ここに私が現在持っているものがあります

そして、これが私が求めているものです