問題タブ [ocaml-lwt]

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

node.js - OCaml/Node.JS の Lwt.async と Lwt_main.run の違いは何ですか?

私はjs_of_ocamlnode.jsを試しています。ご存知のように、node.js はコールバックを多用して、明示的なスレッドを導入することなく非同期リクエストを実装します。

OCaml には、非常に便利な構文拡張機能を備えた非常に優れたスレッド ライブラリ Lwt があります。ノード ライブラリ (AWS S3 クライアント) にバインドするプロトタイプを作成し、lwt っぽいレイヤーを追加してコールバックを非表示にしました。

Lwt_mainfor node.jsへのバインドがないため、コードを で実行する必要がありましたLwt.asyncLwt.asyncコードを withではなくwith で実行することの違いは何Lwt_main.runですか?後者は node.js に存在しませんか? 終了する前に非同期スレッドが完了するまでプログラムが待機することが保証されていますか、それともこれは私のコードの幸運ではあるがランダムな動作ですか?

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

subprocess - サブプロセスとの LWT の単純な相互作用

Unixモジュールを使用してサブプロセスと対話する簡単なプログラムを次に示します。シェル コマンドを起動catし、文字列を送信して読み返すだけです。

最近ライブラリの勉強を始めてLwt、同じ機能を再現したいと思っていました。私は、以下はまったく同じ結果になるはずだと思いました:

しかし、期待どおりに動作しません。明らかに、空の文字列を読み取ってから出力します。

どのように機能すべきかについて根本的な混乱があると思いますLwtが、理解できません。を使用してサブプロセスと通信する方法を誰かに教えてもらえますかLwt?

0 投票する
0 に答える
127 参照

user-interface - GTK と Lwt の統合

lablgtk と lwt を使用したいプログラムに取り組んでいます。lwt スレッドでデータをフェッチする関数があり、lablgtk を使用して GUI にデータを表示したいと考えています。lwt フレームワークへの lablgtk の統合に苦労しています。以下は、GUI を起動できるという私の問題を示す要約バージョンですが、他には何も起こりません。どんな助けでも大歓迎です。

私はコンパイルしていますocamlfind ocamlc -g -package lwt,lwt.syntax,lwt.unix,lablgtk2 -linkpkg gtk_and_lwt.ml -o GtkAndLwt

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

webserver - エラー: Unbound レコード フィールド Server.callback - Ocaml

lwtとを使用して OCaml で簡単な Web サーバーを作成する方法を説明するチュートリアルに従っていますCohttp

以下を_tags含むファイルがあります。

そしてwebserver.ml

次に、ocamlbuild -use-ocamlfind webserver.native次のエラーをトリガーします。

次のように変更すると、次のServer.create { callback; conn_closed }ようにもトリガーされます。

これを解決する方法がわからないので、事前に調べていただきありがとうございます。

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

ocaml - Lwt と Cohttp: `致命的なエラー: 例外 Unix.Unix_error(Unix.ECONNRESET, "read", "")`

Ocaml に Cohttp と Lwt を使用した単純な HTTP サーバーがあります。アプリケーションを実行すると、終了wrkするとすぐに約 50% の確率でクラッシュします。wrkクラッシュは、予期しない接続の切断によって引き起こされると思います。

コンソールに次のエラーが表示されます。

これを防ぐ方法はありますか?

私の完全なソースコードは次のとおりです。

ありがとう!

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

ocaml - Ocaml lwt 終わりのないループ

Lwt で端末アプリケーションを作成しようとしています。基本的に、アプリが実行されている限り、Lwt_io.read_line でターミナルの入力を監視する必要があります。

プログラムの実行中に何らかのループを実現するために、次の (疑似コード) よりも良い方法はありますか?

これが正しい方法かどうかはわかりません。my_application からのすべてのスレッドが終了するたびに、Lwt_main.run が何度も何度も呼び出されます...

Lwt でこれを処理する他の方法またはより良い方法はありますか?

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

ocaml - Ocaml lwt が他のプロセスから stdout を読み取る

端末ベースのアプリケーション用に Ocaml で新しいフロントエンドを構築しようとしています。主なアイデアは、Lwt を使用して新しいプロセスを生成することです。

その後、プロセスの標準入力に何かを書き込んで、外部アプリでコマンドを実行します。

コマンドからの結果を読み取ると、Lwt_io.read_line_opt. 行がなくなるまで読むにはどうすればよいですか?私が直面している問題は、プログラムが特定の時点でハングすることです。で読むとread_line_opt、最後に到達したときに、プロセスが新しい出力をリダイレクトするのを待っているようです。

どうすればこれにアプローチできますか?

私がやろうとしていることの具体例: (端末ベースのアプリケーションは ocamldebug です)

プログラムのソース コード:

通常は で実行するocamldebugtest.d.byte、端末に次のように表示されます。

上記のプログラムを実行すると、次のように表示されます。

そして、ここでハングアップします...、私のプログラムは終了しません。端末で Ctrl-c/Ctrl-c を実行しても、アクティブな ocamlrun プロセスがあります。ただし、端末は応答します。

ここで明らかな何かが欠けていますか?