問題タブ [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 投票する
1 に答える
436 参照

ocaml - js_of_ocamlのマーシャルとmagic_copy

初心者の質問。私はとても素敵なOcamlORAの本を読んでいます。Marshalのセクションのmagic_copyの例を試してみたところ、ターミナルよりもブラウザーに近かったので、ブラウザーのocsigenのトップレベルで試してみました、結果が得られて驚きました。

私のマシンにインストールされているトップレベルとjs_of_ocamlで使用されているocaml2(本が書かれたときの現在のバージョン)とocaml 3.12.1の間で何かが変わったかどうかを確認し、マシンにインストールされている通常のトップレベルで同じ例を試しました。本で説明されている結果:Marshaled値のチェックに関する型システムの問題によるセグメンテーション違反。

私はただ興味があります:なぜですか?

3つのケースで、Marshal.to_stringが同じ文字列を提供していることがわかります。つまり、Linuxはintをマーシャリングし、js_of_ocamlはマーシャリングし、int、js_of_ocamlはfloatをマーシャリングします。オッドマンアウトは、Linuxのトップレベルでフロートをマーシャリングすることです。

これは、javascriptの基本型を使用するjs_of_ocamlに関する何かが原因ですか?または単に...未定義の動作?

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

javascript - コード補完がOcaIde+js_of_ocamlで機能しない

js_of_ocamlでEclipse用のOcaIdeプラグインを使用しようとしています。残念ながら、js_of_ocamlがn-aryメソッドを呼び出すために使用する「##」構文は、コードの完了を混乱させます。

コードの先頭に次のコメントを追加して、OcaIdeにプリプロセッサを実行させようとしました:(* pp:-parser o -parser op -printer a -I /usr/lib/ocaml/js_of_ocaml/ pa_js.cmo *)

'outline'ビューで書き直された変数名を見ることができるので、これは何かをしているようです。残念ながら、それは完全にインテリセンスを壊し、コードにエラーマーカー(赤い波線)が表示されなくなりました。

エラーログは次のエラーでいっぱいになります。

何か案は?

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

build - js_of_ocaml でモジュールを使用するには?

私は現在、OCaml で記述され、js_of_ocaml を使用して JavaScript にコンパイルされた Web サイト プロジェクトに取り組んでいます。コマンドを使用するソース ファイルが 1 つしかない限り、これはかなりうまく機能しocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o -linkpkg -o file.byte file.mlますが、プロジェクトに複数のモジュールを含めたいと考えています。どうやってやるの ?

他のモジュールは、実際には ocamllex と menhir によって生成されたレクサーとパーサーです。js_of_ocaml で ocamllex と menhir を使用する方法に関するチュートリアルを読みましたが、js_of_ocaml がインストールされている場所 (私は opam でインストールしました) について間違った仮定をしており、ocamlbuild を使用しています。 ocamlbuild などのツール。

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

ocaml - OCaml バイトコードを元のソース コードの場所にマップするにはどうすればよいですか?

バイトコードのある部分から元のコード行に移動するためのフォーマットまたはライブラリの優れた機能はありますか? これは明らかに、デバッグやエラー メッセージに役立ちます。

特に、ソース マップのサポートをjs_of_ocamlに追加することがどれほど難しいかを調べています。

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

javascript - js_of_ocaml と Deriving_Json

js_of_ocaml を機能させるには、助けが必要です。ネット上にはあまり情報がなく、マニュアルも非常にまばらです (スニペットや使用例、コメント セクションはありません)。

サーバー上にレコードのあるCardモジュールがあります。card私はcard listAjax を使用してクライアントに を送信しています。そこで、このリストを読み取ってトラバースしたいと考えています。私が最終的にはこれです:

... where jsonhas type 'a、ドキュメントによると(もちろん、実行したときではありません)。

json##lengthリストの正しい長さをログに記録して取得できます。ここからどこへ行けばいいですか?Deriving_Json理想的には、タイプ セーフな get aを使用したいのですcard listが、for ループを使用することもできます (それほどエレガントではありませんが、何でも)。

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

javascript - js_of_ocaml と event_listener

onmouseover イベントを割り当てたい js_of_ocaml に div があります。

deck_div##onmouseover <- (fun () -> (* do stuff *) )

ただし、期待される関数型は

(Dom_html.divElement Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener

このイベントリスナーを構築する方法は? deck_divメソッドはありませんaddEventListener

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

ocaml - js_of_ocaml は OCaml コンパイラからメモリ内データ構造をコンパイルできますか?

OCaml コンパイラと js_of_ocaml の両方が OCaml で書かれていることを考えると、(私には) 以下を使用するラッパーを書くことができるはずだと思えます:

  1. OCamlcompilerlibsソースをコンパイルするOCaml、たとえばInstruct.instruction list(を使用Bytegen.compile_implementation)、および
  2. js_of_ocaml を使用して命令リストを JavaScript にコンパイルし、Parse_bytecode.

したがって、すべてのデータをメモリに保持し、cmoファイルの書き込みと読み取りを回避します。をcmoバッファに書き込んで js_of_ocaml に処理させることができると思いますが、せいぜい非効率的です。

これは現実的ですか/以前に行われたことがありますか、それとも間違った場所/方法で 2 つのコンポーネントを結合しようとしているだけですか?

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

ocaml - js_of_ocaml とコア

私は OCaml と、特に js_of_ocaml コンパイラにまったく慣れていません。

Jane Street Core を使用するアプリケーションを js_of_ocaml でコンパイルできた人はいますか? コンパイル中に多くの「プリミティブがありません」という警告が表示され、それを実行しようとするとnode、実際の例外に変わります。

これらは OCaml から に移植できないプリミティブでJSあり、それらの実装はアプリケーションに依存する必要があることを理解していますが、コアには文字通り何千ものものがありますが、私のプログラムは への出力のみを使用しますstdout

ちなみに、JS には IO 関数が実装されていないため、単純な「hello world」プロジェクトをコンパイルすることさえできませんでした。この目的に使用できる「標準」の JS ファイルはどこかにありますか? たとえば、カスタム JavaScript を書かずにモジュールを有用なものにコンパイルできるように、などcaml_ml_output_charに置き換えますか?console.log