問題タブ [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 に答える
751 参照

erlang - 試してください - Erlang で spawn_link を使ってキャッチしてください

私はErlangが初めてです。今、私はプロセスのリンクについて学んでいます。次の実験の後、私は少し混乱しました:

予想どおり、作成されたプロセスから Pid を取得しましたが、そのプロセスは不明なモジュールと機能のために失敗したため、それに関するメッセージが返されました。

その後、私は次に試しました:

そして、インタープリタープロセスが Pid を抽出できずに失敗する理由がわかりません

ありがとう

PS

簡単に言うと、次のコードがインタープリター プロセスを中断する理由 (** 例外エラー: <0.40.0> に一致する try 句がありません)

そして、このコードがインタープリタープロセスを中断しない理由 (<0.37.0> を返す)

???

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

erlang - 再コンパイル手順がコンソール内から機能しないのはなぜですか?

Rebar の下にバンドルされた Erlang アプリケーション (今のところ、ほんの数個のライブラリ モジュール) があります。ディレクトリ構造は次のようになります。

MyProject$ ./rebar compile は期待どおりに応答します。

Erlang シェル ( MyProject$ erl -pa apps/*/ebin myapp ) を開くと、エクスポートされた関数を問題なく実行できます。

次に、ソース ファイルを編集し、エクスポートされた関数を追加して、再コンパイルします。しかし、なんと --- 新しくエクスポートした関数を実行しようとすると、エラーが発生します --- 未定義の関数です。Erlang シェルで myAppModule:module_info/0 を実行します。ソースファイルに追加したばかりの新しい関数も、他の関数に加えた変更もリストされていません。

関連する *.beam ファイルを削除して再コンパイルします。まだ私の変更を見ることができません。

しかし、今は Erlang シェルから q() 出て、再入力します。あなたは何を知っていますか!私の新しい機能を含め、すべて正常に動作します。

なぜこれが必要なのですか?

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

windows - Windowsでカスタムcouch.iniを使用するには?

サードパーティのコードを使用しようとしています

couchdb.batファイルは CouchDB に引数を渡さないため、これは Windows では機能しません。./my/couch.iniそのため、CouchDB は常に(15984で指定されたポートではなく) デフォルトのポート (5984) で起動します。

バッチ ファイルの内容を使用して、手動で引数を渡してみました。いえ

しかし、これは何もしていないようです。つまり、まだ 5984 のままです。

とと など/full/path/to/my/couch.ini、いくつかのバリエーションを試しましたが、違いはありませんでした。C:/full/path/to/my/couch.iniC:\full\path\to\my\couch.iniC:\\full\\path\\to\\my\\couch.ini

couch.iniカスタムファイルを使用して Windows で CouchDB を実行できた人はいますか?

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

erlang - Erlangシェルは式の結果を表示できません

重複の可能性:
Erlangシェルの問題

MacbookProとubuntuを搭載したラップトップにerlang5.9.2をインストールしました。しかし、どちらにも同じ問題はありません。

ターミナルを開いてerlと入力すると、erlangのバージョンが表示されるので、うまく機能します。しかし、2 + 3のようなエクスプレスを入力すると、結果が表示されません。ちょうどこのような

誰かがこの問題を解決するのを手伝ってもらえますか?

ありがとう!

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

syntax - Erlangはレコード構築で構文エラーを出します

モジュールに次のコードがあります。

Erlangシェルでコンパイルしようとすると、のようなエラーが発生します syntax error before Opts1。上記のコードで何が問題になる可能性があるかについての考え。コードは次のWebサイトから取得されていることに注意してください。Erlangで 例を記録します。

0 投票する
5 に答える
294 参照

erlang - R15B03のErlangexit/2のバグ

ここからの短いコピー:

exit(Pid, Reason) -> true

タイプ:

Pid=pid() 理由=term()

終了理由を含む終了信号をReasonプロセスに送信しますPid

次の動作は、理由がまたは以外の用語である場合に適用されnormalますkill

Pidが出口をトラップしていない場合、Pidそれ自体が出口理由で終了しますReason。が出口をトラップしている場合Pid、出口信号はメッセージに変換され{'EXIT', From, Reason}、のメッセージキューに配信されますPidFrom終了信号を送信したプロセスのpidです。も参照してくださいprocess_flag/2

Reasonがアトムの場合normalPid終了しません。出口をトラップしている場合、出口信号はメッセージに変換され、{'EXIT', From, normal}そのメッセージキューに配信されます。

Reasonがアトムの場合kill、つまりexit(Pid, kill)が呼び出された場合、トラップできない終了信号が送信されPid、終了理由で無条件に終了しますkilled

として使用した場合のexit/2関数とその動作を試してみました。self()PidnormalReason

「通常の」終了メッセージのみがシェルプロセスに送信されるので、終了する理由がないというのは事実ではないでしょうか。

同様に:

だが:

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

concurrency - Erlang コンソールがこのコードニペットでハングする

これは、Erlang の経験がある人にとってはおそらく簡単なことですが、私にはありません。プロセスのフィボナッチ ツリーを作成しようとしています。次に、メッセージを受け取り、そのメッセージを渡したノードの下にあるすべてのノードの合計を計算できます。

これを実行すると:

Erlang コンソールがハングします。理由がわかりませんが、受信句が正しくありますか?

はい、これは宿題です。先生は今週不在です。そのため、インターネットで代役を探しています。

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

erlang - Erlang:Tcpサーバー

こんにちは私はErlangの新しい蜂ですが、パッシブモードでクライアントを受け入れてメッセージを表示する単純なTCPサーバーを作成することができました。新しいクライアントがサーバーに接続するたびに、新しいプロセスを生成します。クライアントが接続したときに生成されるプロセスを使用して、クライアントにメッセージを送信する方法はありますか?

これがコードです。

私がそうするようなものを私は持つことができますか?

Pid!{"Some Message"}。そして、メッセージは、非ブロッキングioを使用してプロセスに関連付けられたソケットに送信されます。

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

erlang - Erlang シェルからの出力またはエラー メッセージがない

Erlang シェルでコマンドを実行しようとすると (たとえば、モジュールから関数を呼び出すなど)、シェルは出力やエラー メッセージを表示せず、ただ戻るだけです。私は正しい形でコマンドを与えると確信しています(最後にドットなどを付けて)。これを解決するには、シェルで次のコマンドを実行する必要があります。

そして、シェルは長いアトムなどを出力し、その後、元のコマンドを正しく実行できます。誰も同じ問題を見たことがありますか?そして、これの理由は何ですか?

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

debugging - 起動しないerlangアプリケーションをデバッグする方法

監視ツリーを構築するためのerlangコードを記述し、次のコマンドを使用して起動時にアプリケーションを起動すると、それが機能しない理由を見つけるのが非常に難しい場合があります。

(myappサンプルモジュール)

私のアプリがスーパーバイザーmyapp_supを起動するとします。myapp_supは、順番に複数のスーパーバイザー(たとえば、server_sup、database_sup、another_sup)を起動します。

これらのスーパーバイザーは、いくつかのgen_serversを起動します。

ある時点で、私のコードに間違いがあった場合、私はそれを見つけることができません!

いくつかのgen_serverのinitコールバックでsomemodule:functionthatdoesntexists()の呼び出しを作成しました。

すべてのVMは、「initはdo bootで終了します」と言ってから、不一致のエラーの場所、正確なファイル、および最上位モジュール(myapp)の行を表示します。

(ok = application:start(...)が一致しないため、不一致)。

erl_crash.dumpファイルを調べましたが、この未定義の関数に関する情報はありません(ただし、アトムリストにあります)。

そこで、エラーがどこにあるかを概算するためにログを作成しましたが、正しいエラー情報を取得するには、gen_serversを手動で起動する必要があります。

私は何が欠けていますか、どうすればそれをより速く理解できますか?

ありがとう