【関数】Erlang Part 2【エリクソン】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2010/07/20(火) 16:13:49
■前スレ
【関数】Erlang【エリクソン】
ttp://pc12.2ch.net/test/read.cgi/tech/1176479959/

■関連URL
ttp://www.erlang.org/
ttp://www.erlang.org/download/erlang-book-part1.pdf
ttp://ja.wikipedia.org/wiki/Erlang
ttp://www.planeterlang.org/
ttp://cean.process-one.net/
ttp://www32.atwiki.jp/erlang/
ttp://jijixi.azito.com/cgi-bin/diary/index.rb?category=Erlang
ttp://www.kmonos.net/alang/etc/erlang.php
ttp://quasiquote.org/log2/Erlang
ttp://www.youtube.com/watch?v=uKfKtXYLG78
ttp://video.google.com/videoplay?docid=-5830318882717959520
ttp://erlide.sourceforge.net/
ttp://rucila.s43.xrea.com/memo/?date=0304
2011/04/07(木) 09:33:02.12
>>96
ぐはぁ、そういう記事を1週間も遅れて貼るかなもう
2011/04/07(木) 09:55:37.68
>>97
しかも>>94は縦読みだ。
2011/04/07(木) 14:57:04.63
April Fool
2011/04/07(木) 16:20:29.39
>>99
that's right!
2011/04/07(木) 20:25:44.71
>>94
Cool !
2011/04/07(木) 22:44:01.66
このスレこんな人いたのかw

Erlang再入門開始
カンマとセミコロンとピリオドの使い分けがようやく見えてきた
2011/04/08(金) 21:55:40.57
Erlang使えば未来予知が出来るのかと思って喜んできてみたら嘘かよ
2011/04/09(土) 05:20:40.84
>>103
Erlangやったからといってバラ色ではないことくらいの予知ならできるが。
105デフォルトの名無しさん
垢版 |
2011/04/10(日) 00:55:39.83
これソースからインストールすると死ぬほど時間かかるんだけどなんとかなんないの
2011/04/10(日) 19:36:25.14
一回だけだろ
気にすんな
2011/04/10(日) 20:41:25.95
クラウド鯖で使うから何度もインストールするんだよね
2011/04/10(日) 20:57:57.37
待つだけだろ
気にすんな
109デフォルトの名無しさん
垢版 |
2011/04/10(日) 23:50:53.53
気にしない
2011/04/10(日) 23:52:29.12
>>105
インストールに時間掛かるとか言うやつは、osインストールやった事無いだろ
2011/04/11(月) 13:12:35.07
>>107
同じ構成のインスタンス借りてるんだろ?
ならコンパイルした結果を丸ごともってきゃいいじゃねぇか
2011/05/10(火) 20:00:37.36
ですな。
checkinstallでrpm化してもいいし。
最近のcheckinstallがどうも不具合ぶくみだが、、
2011/05/29(日) 11:40:10.62
haha
2011/07/04(月) 11:22:19.64
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど

もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ

ゴミが口を開くな
2011/07/06(水) 07:44:35.82
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど

もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
ゴミグラマじゃねーか
116デフォルトの名無しさん
垢版 |
2011/11/30(水) 00:33:25.95
PhalangerやBoo、IKVMみたいな.NET上で動くErlang実装ってないの?
2011/11/30(水) 06:17:52.47
このスレまだあったのか
118デフォルトの名無しさん
垢版 |
2011/11/30(水) 21:44:56.56
ちょっと聞きたいんだけど、入力される文字列長が不定でCRとかLFで終端されるとは限らない上に
eofにも到達しない場合、erlangでどうやって書いたらいいんだろう。

file:read(IoDevice, Number)だとNumber分だけ文字が入力されるまで待ってしまうわけで、
つまりシステムコールとしてのread(2)に近い動作をしてほしい。
流石に1文字づつ読みに行くみたいな頭悪いことしたくないし、Cとかで書いてラップするのが安定?
2011/12/12(月) 17:39:24.26
PythonとかRubyとか使ったけどやっぱりErlangのバイナリ処理とパターンマッチは最強だわ。
文字列の処理が楽だから、プログラムの翻訳機がかなり作りやすい。
で、他にもっと使いやすい言語ある?
2011/12/13(火) 02:03:46.41
鯖移転記念
ttp://www.atmarkit.co.jp/news/200704/27/erlang.html
121デフォルトの名無しさん
垢版 |
2012/01/27(金) 06:04:19.72
ようするにやっぱ最強だわ
2012/02/24(金) 03:36:57.12
How To Become A Hacker
http://cruel.org/freeware/hacker.html

もしコンピュータ言語をなにも知らないなら、まず Python から始めることを
おすすめします。設計がきれいだし、ドキュメントもしっかりしているし、
初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、
おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん
対応しています。

Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしい
ですが、できるコードは Python より高速です。二番目の言語としてはとても
すぐれていると思います。

本気でプログラミングをするなら、C を勉強するしかありません。これはUnix の
中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、
もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に
勉強しようとするのには向いた代物ではありません。
2012/02/24(金) 08:47:40.07
C++でプログラム書くのを覚えるとCでプログラム書くのは無理
Cを読むくらいならできるけど、Cで書くなんてバカらしくてやってらんない
2012/02/24(金) 11:47:20.51
>>119
ない
2012/02/24(金) 12:31:54.46
>>123
おれ産業系なんで、Cばっかりだよ。
2012/02/25(土) 11:16:27.76
>>124
Prolog御大を挙げなくちゃ。
2012/03/02(金) 15:27:53.31
>>123
それCommonLispで以下略とか
Erlangで以下略とか
なんでもよくね?

Cの良いところって組み込みで使ってもリソース食わないとか
ハードウェアに密接する処理書いてもOKとかそのくらいしかわからん(ここはC++でもいいんだが)
2012/04/29(日) 13:59:15.71
Erlangプログラミングを70ページ読んでやって「これ->を:-にすればPrologじゃん」と気付いた
2012/04/29(日) 14:13:00.69
Prologみたいな双方向のユニフィケーションとか、同じ変数名を使ったパターンとか、あるの?
2012/05/07(月) 17:57:49.82
Erlangもっと流行ってほしいなぁ。
ほかの言語やってるとやっぱりErlangのパターンマッチが最強過ぎていやになるわ。

初心者にとっつきやすいようにprint分を簡単にして、
プリコンパイラを簡単にして関数を全部publicアクセスにして、
レコードをクラスっぽい使い方できるようにすれば
ちょっとはとっつきやすくなるんじゃないかな。
2012/05/07(月) 20:40:16.21
標準入出力よりも数値計算が充実してくれれば
行列で検索してもキューの話ばっかり出てきて困る
2012/05/07(月) 23:20:06.08
バイナリ吐けるようになったらね。
2012/05/11(金) 01:23:00.97
C言語とかで関数の頭で引数の検査でassert使うけど、それをパターンマッチングでできるので楽
2012/05/12(土) 11:46:22.40
f({a,X}, {b,X}) ->
みたいに引数の同値の検査を省略できるのはたしかに楽
2012/05/13(日) 00:44:56.28
いくらググってもemacsモードのファイルがヒットしないのでしばらくあきらめてたら、配布物の中に入ってた
136デフォルトの名無しさん
垢版 |
2012/09/01(土) 10:27:54.02
Erlang入門という中古書籍片手にErlangの勉強を始めましたが、
本に書いてある通り、
c(モジュール名).
とコマンドを実行しても、
モジュール名.bea#: error writing file
とエラーが出てコンパイルできません。

http://blog.overlasting.net/2007-05-09-1.html
のサイトを見て、c(sample).を実行しても
sample.bea#: error writing fileと表示されます。

Erlangはマイナー過ぎてググっても分かりません。
誰か助けてください…。
137136
垢版 |
2012/09/01(土) 10:37:43.22
ようは、対話型のコマンドは実行できるが、コンパイルできないんです。
Windows7の64版を使っているのは関係ないだろうし、途方に暮れています。
もちろん作業フォルダにファイルは置いています。
2012/09/01(土) 10:43:24.13
>>136
sample.erlのあるディレクトリに書き込み権限持ってる?
2012/09/01(土) 11:37:37.91
>error writing file

英語はマイナーすぎてわからないということだな
さすが初心者は半端ないぜ
2012/09/01(土) 20:30:15.65
福沢諭吉「脱亜論」 1885年3月16日 時事新報

日本の不幸は中国と朝鮮だ。
この二国の人々も日本人と同じく漢字文化圏に属し、同じ古典を共有しているが、
もともと人種的に異なるのか、教育に差があるのか、 日本との精神的隔たりはあまりにも大きい。
地球規模で情報が行き来する時代にあって、近代文明や国際法について知りながら、
過去に拘り続ける中国・朝鮮の精神は千年前と違わない。
国際的な紛争の場面でも「悪いのはお前の方だ」と開き直って恥じることもない。
もはや、この二国が国際的な常識を身につけることを期待してはならない。
「東アジア共同体」の一員として その繁栄に与ってくれるなどという幻想は捨てるべきである。
日本は、大陸や半島との関係を絶ち、 欧米と共に進まなければならない。
ただ隣国だからという理由だけで特別な感情を持って接してはならない。
この二国に対しても、国際的な常識に従い、国際法に則って接すればよい。
悪友の悪事を見逃す者は、共に悪名を逃れ得ない。
私は気持ちにおいては「東アジア」の悪友と絶交するものである。

         _,,,,,,__  __,,,__
        ィjj)))))))))!!!!!彡ヽ,
      /ミ/         ,}彡ヘ
      |ミ{ -‐ ‐ ‐ ‐-  {三=|
      El==; ゚ ''==. |ミミ,|
        `レfォ、,〉 :rfォ.、,  !iル┤
.        { `¨ i ・、¨ ´  `{ゞ'} 支那、朝鮮とは
.        | '`!!^'ヽ     .「´  付き合うなと忠告しておいたのに。。。
        ! ,-ニ'¬-、  ,!|,_   
.        \´?`  / ∧ヘ、
         __/〉`ー ' ´ /  〉 \
     _, ィ´「∧     /  /    」¬ー- 、_
  -‐ ´  / /  ヽ、/    /     iヾ      ヽ
141136
垢版 |
2012/09/02(日) 15:52:29.76
返信遅れてすみません。

>>138
それが原因でした。恥ずかしいです。
ありがとうございました。
142デフォルトの名無しさん
垢版 |
2012/09/18(火) 13:23:04.15
Learn You Some Erlang for Great Good!
ttp://shop.oreilly.com/product/9781593274351.do

haskell本みたいに流行るかな
2012/09/18(火) 16:24:56.70
とりあえず翻訳しますん
2012/09/19(水) 20:51:23.28
Great Goodって流行ってんのか?
2012/10/05(金) 01:46:26.68
http://itpro.nikkeibp.co.jp/article/NC/20120920/424107/
日経コンピュータ9/27号の関数型言語の記事で、誰も校閲してくれなかったのか
(erlangを参考にアクター押しのscalaと違い) erlangが並列実行に向いてないことになってて泣けた。
何故か記事にされてないclojureよりも残念な気がしてくる。
2012/10/05(金) 02:08:57.26
Scala押しありきの記事みたいだから(出てくる名前からして)気にしても仕方ないよ
2012/10/05(金) 05:26:29.57
進藤 智則さんって、Erlangを使ったことがあるのだろうか?
2012/10/05(金) 23:07:29.48
>>145
好意的に解釈すると、
Erlangは「並列(pallarel)」ではなくて「並行(concurrent)」に向いてる言語だ、
といいたんじゃね?
あと、ErlangのSMPサポートは2006年(R11B)からなので、マルチコアを
活かせるようになったのは結構最近。
2012/10/06(土) 22:10:16.70
> あと、ErlangのSMPサポートは2006年(R11B)からなので、マルチコアを
> 活かせるようになったのは結構最近。

そーだったのか、知らなかった。>>148は詳しいな。
マルチコアでerlangの時代が来ましたよ!っぽい売り出し方してたから、
昔からそういうつくりなのかと思ってた。

あと、erlangのプロセスって、カーネルスレッドともユーザレベルスレッドとも違って
erlangのランタイムで実現されているという説明をよく目にするんだけど、これってどゆこと?

erlangのランタイムはOSのスレッドを利用しないで、並列(parallel)な処理を実現しているということ?
そうだとすると、たとえば、C言語でもカーネルスレッドを使わずに並列(parallel)な処理を実現できる方法があるの?

150デフォルトの名無しさん
垢版 |
2012/10/07(日) 03:45:41.74
       //
     /  /   バカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ 馬鹿には無理
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
2012/10/07(日) 15:51:59.58
>>145
メッセージパッシング中心だから、並列実行の実効には向いているがプログラミングが難しい
その代わり分散処理に向いている
2012/10/09(火) 22:25:26.82
http://ja.wikipedia.org/wiki/グリーンスレッド
http://sssslide.com/www.slideshare.net/pfi/ss-9780450
https://gist.github.com/506491
2012/10/25(木) 11:44:12.09
久しぶりに触ったけどどうしても変数名を小文字で書いてしまって困る
ElixirとかあるけどどうせならReiaに流行ってほしかったなあ
2013/02/10(日) 18:40:22.63
Parallella and Erlang: An Introduction
ttp://www.parallella.org/2013/02/04/parallella-and-erlang-an-introduction/

なんか面白そう
2013/02/16(土) 16:18:12.72
Erlangを勉強したいのですが2つ知りたいことがありまして
・Erlangプログラミング(動物)とプログラミングErlang(飛行機)のどちらがお勧めですか
・マシンにCPUコアがたくさんあったら、あるだけ使ってくれるのでしょうか?
暇だったら教えてください
2013/02/16(土) 16:24:20.12
馬鹿には無理
2013/02/16(土) 18:21:05.54
>>155
他の言語でもオライリー派だったせいか、オライリーの方が分かりやすかった
ただ、最初から応用が頭にある場合は飛行機の方がいいかもしれない

ErlangのVMが用意するスケジューラの数はマシンについてるコア数と同じだけど、その割り当てが1対1でマシンについてるコアを使うとは限らない
2013/02/16(土) 20:05:23.21
>>157
せっかくなので飛行機の方を買ってみようと思います
ErlangとしてはCPUを使うように努力してくれるみたいで安心しました

教えていただきありがとうございます
2013/02/16(土) 20:27:19.21
>>158
その本達は両方持ってて飛行機の方を先に読んでいたんですけど、動物本は文章が例によって長くて途中で投げましたw
結構昔の話なのでもう忘れてしまって印象だけなんですけど、多分そっちで正解です。

まあ気が乗ってくれば、入門だけ本に助けてもらって後はいくらでもネットで調べられますからね。
2013/02/23(土) 17:36:14.77
ところでErlangでキラーアプリてなんかないんですか?
特徴いかしたソフトあればもっと流行ると思いんだけど
2013/02/23(土) 20:15:33.89
node.el
2013/02/24(日) 11:47:00.84
Wings3D
2013/03/22(金) 01:49:31.43
HBase/HadoopやCassandraの中身をみてうんざりして
分散システムの構築に特化していると聞いて
RiakやHibariとかに密かに期待してるんですが、
これらってちゃんときちんと作られてます?
2013/03/22(金) 07:41:00.18
どの辺りにうんざりしたのか聞きたい。
2013/03/22(金) 18:35:55.35
pythonの本読んでたらcouchDBの宣伝してた
2013/03/22(金) 23:34:29.56
>>164
(Cassandraはちらっと見た程度だけど)
大局的には凡人には及びも付かないロジックなんだろうけど
道具レベル的にJavaに対する理解が稚拙、特にマルチスレッド関係
バグにバグを重ねていてもはや修正不可能。なんで動いているように見えるのか不思議
JIRAの手ごたえだと、中の人に分かってない人が混じっていて、今後もバグを積み重ねていくものと思われ
なんで地盤の部分をちゃんと勉強しないんだろ。まさに砂上の楼閣
2013/03/23(土) 08:00:46.09
>>166
そっか。うちなんかはあまり考えずにCDHのHBaseをインストールして運用しているだけの
ユーザーだから、あまり実装の稚拙さとかは考えたことが無かった。

ただRiak等が良いのですぐに乗り換えられるかと問われれば、うちの用途から考えると無理
だなとは思う。Javaで書かれた分析処理の並列実行が一番の用途でレンジスキャンが主なので
やはりHBaseが一番はまるんだよね。
データモデルも違うし、結局のところ用途から選ぶのが最初じゃないのかな。
2013/03/23(土) 18:38:28.24
http://hypertable.com/why_hypertable/hypertable_vs_hbase_2/
BigTableクローンとしては、HbaseのほかにHyperTableってのもあるけど、
C++で実装されているしAPIに互換性があるわけではなかったと思う。

Erlang/OTP使うと並列プロセスやプロセス監視などの仕組みが整ってるし
ディスクアクセスもETSに集中させれば管理し易いので、実装レベルを保証しやすいと思う。
http://www.erlang.org/doc/man/ets.html
http://www.aosabook.org/en/riak.html
2013/04/03(水) 22:39:48.08
未だにちょくちょく解説本が出てるのね
http://www.amazon.co.jp/dp/1593274351/ref=snp_td1
2013/04/05(金) 22:57:53.98
Programming Erlangも第2版が出るってJoeが言ってたよ
2013/04/06(土) 01:33:29.59
もしかして、まだ開発が進んでるのか…?
2013/04/06(土) 02:14:41.40
第二版でるのは嬉しいけど初版出てから仕様に大きな変化が何かあったっけ?
2013/04/06(土) 03:31:03.27
joearms.github.com/2013/04/05/programming-erlang-2nd-edition.html
どうやら最近の流れに反映させるのが主な目的なのかな
これは初学者がステップアップしやすくなりそうだし
初版を持ってる人も最近の動向が掴めていいかもしれないね
2013/04/24(水) 21:25:43.67
escriptでプログラム動かすときmain/1のアリティを使う場合、main([Arg])な感じに書かないと
思ったように動かなかったんだけどアリティを[]で囲むのってescriptで動かす場合だけなの?
2013/04/25(木) 23:12:46.92
>>174
> escriptでプログラム動かすときmain/1のアリティを使う場合、main([Arg])な感じに書かないと
> 思ったように動かなかったんだけどアリティを[]で囲むのってescriptで動かす場合だけなの?

まず、argumentとarityを取り違えてる。

コマンドラインで与えた引数がStringのリストとしてmain/1に渡されるので、
main([Arg])としたら、引数が1個の時だけマッチして、かつその引数がArgに入る。

参考:
ttp://erlang.org/doc/man/escript.html
2013/04/26(金) 00:44:56.26
>>175
なんとなく分かった気がしました。
参考URLありがとうございました
177デフォルトの名無しさん
垢版 |
2013/07/15(月) NY:AN:NY.AN
公式のドキュメントや飛行機本にでてるリスト内包表記でサンプルに
ピタゴラスの定理が使われてるけど
pyth(N) ->
[ {A,B,C} ||
A <- lists:seq(1,N),
B <- lists:seq(1,N),
C <- lists:seq(1,N),
A+B+C =< N,
A*A+B*B == C*C
].
の条件の最期の2行がなんでこんな条件書くだけで
プログラムが動作するのかが納得がいかないのは自分だけ?
2013/07/15(月) NY:AN:NY.AN
あなただけ
2013/07/16(火) NY:AN:NY.AN
バックトラック
2013/07/16(火) NY:AN:NY.AN
>>177
過去、自分も納得いかんかったw

で、リスト内包表記で書かれたリスト処理をmap/filter/concatで書き直すことが可能な事は、
以下の書籍で明解に解説されているので、書店などで立ち読みするなりを薦める

 関数プログラミング, R.バード/P.ワドラー共著, 武市正人訳
  http://www.amazon.co.jp/dp/4764901811/
  リスト内包表記の書き直しは節「3.4 リストの写像と濾過(mapとfilter)」内の p66-68を

ちなみにこの本、最近出版された第2版で全面的にHaskellへ書き換えられた(改悪された?)が、
上記のリスト内包表記の書き直しを含むいくつかの基礎的な事柄が削られているので注意要
2013/07/16(火) NY:AN:NY.AN
バックトラックなの?
A, B, C それぞれについて、1 から N の全組み合わせだと思ってたけど。
182デフォルトの名無しさん
垢版 |
2013/07/16(火) NY:AN:NY.AN
>>180
へー
参考になった
183180
垢版 |
2013/07/16(火) NY:AN:NY.AN
>>181
いくつかの規則に従って、内包表記をmap/filter/concatから構成される一般的な式へ
書き換える(変換する/翻訳する)手法だから、Prologのバックトラックとはまったく違う
詳しくは>>180の書籍を参照

Erlangのオリジナルは論理型言語から出発しているが、
その言語とは(Concurrent PrologやGHCといった)並列論理型言語のことであり、
(いわゆるPrologと呼ばれる)逐次論理型言語が持つバックトラック機能は失われている
だから、逐次Prologに関する知識の多くはErlangでは役に立たないと考えた方がいい
184177
垢版 |
2013/07/16(火) NY:AN:NY.AN
>>180
最初の3行で1からNまでのリスト3つ作って勝手に総当りでもやってんのかと
思ってましたけどそんな機能あったんですね。
とりあえずバックトラックについてはググって
本は図書館に初版あればいいけどとりあえず探してみます。
2013/07/16(火) NY:AN:NY.AN
パックトラックはprologのモノとは違うのか
2013/07/16(火) NY:AN:NY.AN
総当たりやってるんじゃないの?
187180
垢版 |
2013/07/16(火) NY:AN:NY.AN
リスト内包表記について、関数型言語の実装技法を解説した以下の書籍に(>>180より詳しい)説明あり

"The Implementation of Functional Programming Languages", Simon Peyton Jones, 1987
 http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/
 リスト内包表記については、Chapter 7 List Comprehensions を参照

リンク先のページでは、この書籍の全文がPDFとして無償公開(タダ!!)されているので、一読をば

>>185
Erlangでもバックトラックのアルゴリズムは記述できるけど、
Erlangの計算モデルでバックトラックが使われているという話を(自分は)見たことも聞いたことも無い
また、Erlangはパターンマッチングが使えるけれど、これもPrologの単一化(unification)とは別物
>>183で書いたように、Erlangと類似性があるのは(バックトラックを捨てた)並列Prologだ
Erlangの外観が逐次Prolog(いわゆるフツーのPROLOG)と似ているからといって、惑わされてはいけない

>>186
基本的な考え方は総当たりだね、いわゆる generator&filter パターンと呼ばれる手法
で、リスト内包表記をg&fパターンへ書き換える技法を解説したのが>>180や上記の書籍になる
2013/07/16(火) NY:AN:NY.AN
難しい用語はすっ飛ばして、総当りとやってる事は何か違うの?見かけ上じゃなくて実質的に
2013/07/17(水) NY:AN:NY.AN
>>188
総当たりでも、深さ優先か幅優先かで停止性が異なる
2013/07/17(水) NY:AN:NY.AN
この場合の深さと幅って何になるの?
191180
垢版 |
2013/07/17(水) NY:AN:NY.AN
>>188
意味(=実質)は同じで構文(=見かけ)が違うだけ、いわゆる構文糖(syntax sugar)
2013/10/05(土) 20:39:57.04
joe armstrongのプログラミングerlangの8.11の練習問題で質問です。
一番目の問題の「spawn(Fun)をAnAtomとして登録する関数start(AnAtom, Fun)を書くという問題で、
2つのプロセスがstart/2を呼び出した場合もプログラムが正しく動作するようにすること。」と言う問題で以下のコードを書きました。

start(AnAtom, Fun) ->
undefined = whereis(AnAtom), %% ここのコードはまずい?
register(AnAtom, spawn(Fun)).

erlangの並行処理のモデルがよくわかっていないのですが、
上のコードのコメントが書かれているところででプロセスAがwhereis(AnAtom)をundefinedに評価した後に別のプロセスBに切り替わってwhereis(AnAtom)をまた
undefinedに評価することはありえるのでしょうか?それともノンプリエンティブマルチタスクに似た並行処理モデルなのでしょうか?

こういうことに気にしないようにregisterを呼び出すプロセスを作って、
そのプロセスにregisterを呼び出すようにメッセージを送ったほうが良いのでしょうか?
2013/10/06(日) 07:33:08.12
      \                     /
       \                  /
         \               /
          \            /
            \         /
             \∧∧∧∧/
             <    俺 >
             < 予 し  >
             <    か >
─────────< 感 い >──────────
             <   な >      
             <  !!! い >       
             /∨∨∨∨\
            /         \
          /   ∧_∧     \
         /     (  ・ω・)      \
       /    _(__つ/ ̄ ̄ ̄/    \
      /        \/     /      \
2013/10/06(日) 08:06:02.97
(ここに一人いるんですが長いこと触ってないので答えられないんです)
2013/10/06(日) 09:38:30.84
>>192

CPU(core)が複数あると、完全に同時並行で動くと思う。
問題は
2つのプロセスが同時に呼んだ場合も正しく動くこと。
そのような場合、片方のプロセスは成功、もう一方は失敗を保証すること
で、spawnされたプロセスをどうするか書かれていないし、
true = register(AnAtom,spawn(Fun)).
で良いような気がする。

2版出たのかな?
2013/10/06(日) 23:31:35.79
Erlang学習してて詰んでる人は、「コンピュータプログラミングの概念・技法・モデル」(略称CTMCP)を読むと変化が起きると思う。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況