問題タブ [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.
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 に表示されます。
javascript - js_of_ocaml によって生成された関数を呼び出す方法は?
私は JavaScript が初めてで、使用しようとしていますjs_of_ocaml
。
私は最初に非常に簡単に書いたcubes.ml
:
次に、それを遵守しました:
次に、JavaScript ファイルを生成します。
これが生成されたcubes.jsです。そのファイルには名前が見つからない1234
か、関数名が見つからないことに注意してください。simple
で生成されたものを呼び出すHome.js
関数が必要な別の JavaScript ファイルがあります。しかし、私はそれを書く方法がわかりません。誰でも助けてもらえますか?callSimple
cubes.js
編集1:
@EdgarAroutiounian が提案した解決策を試しました。
私が書く場合home.js
:
最初の行は を返しfunction (a){return p(c,aM(b,a))}
、2 行目は を返します0
。それらは私が期待するものではありません。
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 ファイルから適切に呼び出されるように生成する必要があります。./T
hello
js_of_ocaml T -o cubes.js
cubes.js
jsOneArgument
cubes.js
パッケージを台無しにする前に、が./T
返されたので、 、などをUnimplemented Javascript primitive caml_pure_js_expr!
インストールしました...npm
node
javascript - 簡単なコマンドライン OCaml スクリプトを Javascript にコンパイルする方法
Sys.argv.(1)
計算を実行し、結果を stdout に出力する単純なコマンドライン OCaml アプリケーションがあります。を使用してJavascriptにコンパイルできますが、未定義であることjs_of_ocaml
に関する多くのエラーが発生します。caml_ml_output_char
printfs をスタブ化してこれらのエラーを修正したため、実行されますが、実行中に Firefox がフリーズします。
単純な OCaml コマンドライン スクリプトを Javascript ベースの Web ページにきれいにコンパイルするにはどうすればよいですか? フォークされたバージョンを維持したり、ブラウザーをフリーズしたりせずに?
js-of-ocaml - レコードを返す OCaml 関数をラップする
OCaml 関数を定義しましたmanipulate: string -> string
。そして、それをラップして JS 関数を作成しますjsManipulate
。
manipulate
ここで、単なる文字列ではなく、より多くの情報を返してもらいたいと考えています。レコードを返したい: manipulate: string -> myrecord
where myrecord = { result: string; info_1: int; info_2: bool }
in OCaml format.
この場合、manipulate
JS 文字列から JS レコード (またはオブジェクト?) も返す JS 関数を作成するためにラップする方法を知っている人はいますか?
manipulate
PS: JS オブジェクトを構築するために、(3 回ではなく) 1 回だけ呼び出したいと思います。
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)他のオプション?
現在、ページは次のように生成されています。
前もって感謝します
javascript - 非同期 JS 関数をラップして OCaml で使用することは可能ですか?
js_of_ocamlを使用して JS 関数をラップし、OCaml 内で呼び出すことができます。JS 関数が非同期の場合 (つまり、Promise が含まれていて時間がかかる場合) は、動作する例を作成できません。
JSfun
ラップしたい非同期JS関数は以下の通りです。変数x
は 2 秒後に設定され"here"
、これが私が返したい値です。
JSfun
JS を正常に呼び出して"runJS here"
、期待どおりに取得できました。
しかし、OCaml でこの連鎖を真似するのは困難です。JSfun
OCaml でラップするには、以下を使用する必要があるようです:
そして、私はこのように呼び出す以外に考えがありません:
当然のことながら、これは機能しません:呼び出され"inside setTimeout"
たことを証明する printが表示さJSfun
れますが、戻り値はありません。
ここにjsfiddleがあります。また、同期 JS 関数をラップする実際の例も作成します。OCaml では、ラッピングは次のとおりです。
それで、誰かが解決策、アイデア、または回避策を持っていますか?
d3.js - 融合された getter-setter 関数のラッピング
jooc を使用してd3-forceのサブセットをラップするのに問題があります。ライブラリはオブジェクトのプロパティを使用せず、代わりに融合された getter-setter 関数を実装します。
OCaml で同じ種類のポリモーフィズムをエミュレートする方法を見つけたいと思います。ここに私が現在持っているものがあります
そして、これが私が求めているものです