問題タブ [erlang-shell]

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

erlang - Erlangのプロセスのリストにメッセージをブロードキャストする方法は?

私は Erlang を初めて使用し、あるプロセスからプロセスのリストにメッセージを送信する方法を理解しようとしています。

Pid を含むリストを保持するデータ構造があるとします。Pid にメッセージ「M」を Pid のリストに送信させるにはどうすればよいですか。リストの各要素には、文字列 (名前を表す) と Pid の 2 つの要素があります。私が思いついたのは次のとおりです。

しかし、私が理解していることは、Pid のリストの要素から Pid を「抽出」できるように、Pid のリストを正しくパターン一致させていないということです。

基本的に、新しいメッセージが到着するのを常に待っている「ルーパー」と呼ばれる機能があります。タイプのメッセージを受信したとき

ここで、「M」は「Friends」と呼ばれる Pid のリストにブロードキャストしたいメッセージであり、R は単なる整数です。

R は基本的に、メッセージがどこまで進むべきかを示す整数です。

Pid をセットアップし、Pid 間の「友情」を設定した後、端末から得られるものは次のとおりです。

どんな助けでも大歓迎です。ありがとう

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

erlang - Erlangのプロセスのリストにメッセージをブロードキャストする方法は? コンソール吊り

Erlang は初めてで、あるプロセスからプロセスのリストにメッセージを送信する方法を理解しようとしています。

文字列と Pid を含む要素を持つリストを保持するデータ構造があるとします。前に説明した2つの要素の1つであるPidにメッセージ「M」をPidに送信させるにはどうすればよいですか? 私が思いついたのは次のとおりです。

しかし、私が理解していることは、Pid のリストの要素から Pid を「抽出」できるように、Pid のリストを正しくパターン一致させていないか、リストを正しく使用してメッセージを送信していないことです。それ。

基本的に、新しいメッセージが到着するのを常に待っている「ルーパー」と呼ばれる機能があります。タイプのメッセージを受信したとき

ここで、「M」は「Friends」と呼ばれる Pid のリストにブロードキャストしたいメッセージであり、R は単なる整数です。

R は基本的に、メッセージがどこまで進むべきかを示す整数です。

Pid をセットアップし、Pid 間の「友情」を設定し、メッセージをブロードキャストした後、端末から得られるものは次のとおりです。

メッセージをブロードキャストした Pid のメッセージを表示すると、コンソールがハングするだけで、他の Pid にはメッセージが受信されません。

どんな助けでも大歓迎です。ありがとう

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

erlang - Erlang のプロセスにメッセージをブロードキャストする際のエラー

私はErlangを初めて使用し、Pidに他のいくつかのPidにメッセージを送信させようとしています。

Pid、文字列(メッセージ)、および整数R(半径)を引数として取る関数があります。

新しいメッセージが受信されるのを待つこのリスナー関数があります。

関数ブロードキャストを呼び出すと、次のメッセージが表示されます。

56 行目は次の行です。

私が理解していることから、メッセージを正しく渡していません:/何が間違っていますか?

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

file-io - erlangで関連するパスを持つファイルを開く方法は?

私はerlangをいじっていて、関数で.txtファイルを読み取る方法を見つけようとしていましたが、関連するパスからそれを読み取る方法がわかりません.基本的に、これは私のプロジェクトディレクトリを構築した方法です:

すべての .beam ファイルは ebin ディレクトリにあり、「priv/」ディレクトリにある .txt ファイルを開く必要があります。

これは私のコードです:

この関数を呼び出すとき、「/absolute/path/to/project/directory/priv」のような文字列を渡しますが、毎回このエラーが発生します。

関数を呼び出している.beamファイルと同じフォルダーに.txtファイルがある場合、ファイル名「foo.txt」として入力するだけで問題なく動作します。

プロジェクトの関連するパスから関数を読み取るにはどうすればよいですか?

このようにできない場合、.beam ファイルと同じディレクトリ内のフォルダー内にあるファイルを読み取るにはどうすればよいですか?

例えば

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

c - NIF が Erlang を呼び出した後に変化するバイナリの値

Erlang でコーディングする予定のアプリの NIF を使用してバイナリを操作するつもりです。NIF の cpp ファイルと erl ファイルへの gist リンクを以下に示します。

[Erl Gist リンク] https://gist.github.com/abhijitiitr/3a5bc97184d6dd32f97b

[C++ Gist リンク] https://gist.github.com/abhijitiitr/24d2b780f2cdacebfb07

基本的に私は簡単なテストをしようとしています。NIF 呼び出し間でバイナリを共有し、連続する NIF 呼び出しでそれらを正常に操作します。

erlang REPL でコードをテストすると、

バイナリは、NIF 呼び出しの間に変更を保存しました。3 番目のコマンドの REPL 出力は次のとおりです。

<<1>>初期化フェーズでパスしました。なぜに変わったの<<60>>ですか?ここで何が起こっているのか理解できません。誰かがエラーを指摘できますか?

C++ コンパイル命令

私のMacで。

また、NIF で共有リソースを操作する並行プロセスについても質問したいと思いました。それは可能ですか、それとも単一の Erlang プロセスで NIF にアクセスする必要があるという規則がありますか。

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

erlang - Erlang 生成プロセス

以下は、best と呼ばれるメソッドから 3 つのプロセスを生成しようとしたプログラムです。すべてのプロセスからの応答を受け取り、それらをタプルに格納したいのですが、1 つの応答しか取得できません。

誰かがこの問題で私を助けてくれますか

0 投票する
4 に答える
11094 参照

erlang - Erlangでリストが空かどうかを確認するには?

基本的に、値と ID のリストを含む構造があります。私がやりたいのは、IDのリストをマップしてそれらにメッセージを送信することですが、IDのリストを最初に初期化するときに、変数「empty_set」を配置します(名前をempty_listに変更する必要があるかもしれません:P)。

問題は、マップ関数を呼び出すたびに、リストが「empty_set」であるかどうかを最初に確認し、そうでない場合はマップ関数を使用することです。コードは次のとおりです。

呼び出される関数は次のとおりです。

これは私がプロセスを開始する方法です:

問題は、実行すると次のエラーが発生することです。

私が理解していることから、リストが空かどうかを確認する必要がある if 式にもかかわらず、リストをマップしようとします。

では、表現のどこが間違っているのでしょうか。

ありがとう

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

erlang - PidがErlangのPidのリストのメンバーであるかどうかを確認するには?

プロセス Pid に値を設定する関数があり、プロセスを別のプロセスに依存させることができます。したがって、プロセスに値を設定すると、それに依存するプロセスにも値を設定する必要があります。ただし、プロセス間に円がある場合

次に、エラーメッセージを返したいです。

既に値が変更されている Pid のリストを渡して、同じ Pid に 2 回遭遇した場合 (Pid のリストのメンバーであるかどうかを確認することによって)、関数全体が停止するようにします。これは私のコードです:

実行すると、次のエラーが表示されます。

私が理解していることから、私はリストに悪い引数を与えます:メンバー関数。私は何をすべきか?

ありがとう

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

erlang - Erlang でシステム コマンドを実行し、os:cmd/1 を使用して結果を取得する方法は?

エラーを返すか、Windowsで終了しない次のコマンドを実行しようとすると、エラーが文字列として返されるのではなく、常に空のリストが返されます。たとえば、次のようになります。

私は得る:

のようなものの代わりに

Linux では、すべてが期待どおりに機能するため、「/bin/sh: 1 行目: 何とか: コマンドが見つかりません\n」と表示されます。

したがって、実行がどのように終了したかなどを知る必要がある場合、その機能に頼ることはできません。コマンドを実行してエラーコードを含む結果を取得する一般的な方法を提案してください。

ありがとう!