問題タブ [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.
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に関する何かが原因ですか?または単に...未定義の動作?
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'ビューで書き直された変数名を見ることができるので、これは何かをしているようです。残念ながら、それは完全にインテリセンスを壊し、コードにエラーマーカー(赤い波線)が表示されなくなりました。
エラーログは次のエラーでいっぱいになります。
何か案は?
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 などのツール。
ocaml - OCaml バイトコードを元のソース コードの場所にマップするにはどうすればよいですか?
バイトコードのある部分から元のコード行に移動するためのフォーマットまたはライブラリの優れた機能はありますか? これは明らかに、デバッグやエラー メッセージに役立ちます。
特に、ソース マップのサポートをjs_of_ocamlに追加することがどれほど難しいかを調べています。
javascript - js_of_ocaml と Deriving_Json
js_of_ocaml を機能させるには、助けが必要です。ネット上にはあまり情報がなく、マニュアルも非常にまばらです (スニペットや使用例、コメント セクションはありません)。
サーバー上にレコードのあるCard
モジュールがあります。card
私はcard list
Ajax を使用してクライアントに を送信しています。そこで、このリストを読み取ってトラバースしたいと考えています。私が最終的にはこれです:
... where json
has type 'a
、ドキュメントによると(もちろん、実行したときではありません)。
json##length
リストの正しい長さをログに記録して取得できます。ここからどこへ行けばいいですか?Deriving_Json
理想的には、タイプ セーフな get aを使用したいのですcard list
が、for ループを使用することもできます (それほどエレガントではありませんが、何でも)。
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
。
ocaml - js_of_ocaml は OCaml コンパイラからメモリ内データ構造をコンパイルできますか?
OCaml コンパイラと js_of_ocaml の両方が OCaml で書かれていることを考えると、(私には) 以下を使用するラッパーを書くことができるはずだと思えます:
- OCaml
compilerlibs
ソースをコンパイルするOCaml、たとえばInstruct.instruction list
(を使用Bytegen.compile_implementation
)、および - js_of_ocaml を使用して命令リストを JavaScript にコンパイルし、
Parse_bytecode
.
したがって、すべてのデータをメモリに保持し、cmo
ファイルの書き込みと読み取りを回避します。をcmo
バッファに書き込んで js_of_ocaml に処理させることができると思いますが、せいぜい非効率的です。
これは現実的ですか/以前に行われたことがありますか、それとも間違った場所/方法で 2 つのコンポーネントを結合しようとしているだけですか?
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