【関数】Erlang【エリ ..
[2ch|▼Menu]
267:デフォルトの名無しさん
07/12/06 15:03:38
>>264
ソースコードに日本語を書くやつはバカです

268:デフォルトの名無しさん
07/12/06 17:17:22
>>267
つ バカ言語「ひまわり」

269:デフォルトの名無しさん
07/12/06 18:15:52
>>267
なんだそりゃ?


270:デフォルトの名無しさん
07/12/06 18:20:27
ソースコードに日本語書いて何が悪いんだ
日本人にとって日本語は便利だぞ

271:デフォルトの名無しさん
07/12/07 07:35:55
>>270
> ソースコードに日本語書いて何が悪いんだ


272:デフォルトの名無しさん
07/12/07 07:54:00
>>271
そりゃ君

273:デフォルトの名無しさん
07/12/07 12:14:33
>>271
かのファインマンだって日本語習得は断念したほど難しいんだぜ

274:デフォルトの名無しさん
07/12/08 01:43:00
>>270
>>267 は日本語を扱えないコンパイラが多かった時代の技術者か、
外国人も参加しているオープンソースプロジェクトのコミッタか、
そのどちらか

275:デフォルトの名無しさん
07/12/08 05:17:50
>>274
今でも、日本語混ぜてねぇ・・・・とか思うんだが
どうせソース読むのは英語も曲がりなりにでも読めるようなやつらばっかっしょ。
メッセージ分離がいいと常から思う身としては、>>267に同意してしまう。



変数、関数名とかまで日本語サポートしてるなら
むしろ、ガンガン日本語で行って見ても面白いかも。とかとも思ってるけどねw

276:デフォルトの名無しさん
07/12/08 14:00:55
でもリテラルに日本語を書いてはいけない事について
説得力ある説明は出来ないんでしょ?

それならただ単にバカと言いたいだけと思われても
仕方がないよ。

277:デフォルトの名無しさん
07/12/08 14:10:07
特に REPL がある言語で、対話的にコードを入力する場合は、
メッセージ分離なんて考えずに、生の日本語文字列を直接入力
したくなるのは当然じゃないかな。

278:デフォルトの名無しさん
07/12/08 17:05:35
Erlangがマルチバイト文字をサポートしていない理由は、その出自にあると聞いた事がある。
もともとエリクソンで通信インフラ用言語と開発された際に、超高速のプロセス生成、強力な
並列処理のトレードオフとして、データを「どこの国の言語で書かれた文章」かを判別しない、
としたとの事。
一般アプリを書く者として、Erlang使うなら日本語処理ライブラリが欲しい、というのは同意。



279:デフォルトの名無しさん
07/12/08 17:32:43
↓を思い出した
--
オープンソースのイベントで、

質問者「オープンソースは英語が使えないとなかなか使えないところがありますが」

壇上者「いえ、日本人は英語が使えないと言われていますが、そんな事はありません。
その使う気があれば、だれでも英語の掲示板でも普通に会話できるので問題
にはなりません」

質問者「そうですか……ありがとうございました(T_T)」

というのも言葉の壁だね。


280:デフォルトの名無しさん
07/12/08 18:18:40
おもしろい。

281:デフォルトの名無しさん
07/12/08 18:49:32
>>279
ある意味真実だろ。
なんで完璧な言葉でないとダメだと思い込むのか不思議でしょうがないと感じる事あるんだけどなぁ。
支那やインドから来日したエンジニアが完璧な日本(英)語話したりしないのを微笑ましく思うのに自分等が英語での会話に完璧な表現力を必須としたがるんだか。

#完璧じゃなきゃ困るのは契約書だけだぜ

282:デフォルトの名無しさん
07/12/08 19:18:47
281は279に書かれたやりとりが通じていないのではないか?

283:デフォルトの名無しさん
07/12/08 19:54:54
>>282
エリートの傲慢ってやつだろ。


284:デフォルトの名無しさん
07/12/08 20:04:08
壇上者は、エリートの傲慢だと思ってしまうのは卑屈すぎるって
言いたかったんだろうね。俺もそう思う。

285:デフォルトの名無しさん
07/12/08 22:15:05
>>284は典型的なエリートの傲慢の誇示


286:デフォルトの名無しさん
07/12/08 22:23:39
本当のエリートの傲慢はこんな感じだぜ。

壇上者「いえ、あなたが英語を使えないのは分かっていますが、それだけではありません。
その気があれば、誰だって英語で普通に会話出来るのに、その事にすら気付いてないのが
問題です。あなたはいつも大切な事を見逃しますね。ふふん。」

287:デフォルトの名無しさん
07/12/08 22:26:39
とフランス語で語るのである。

イヤミのキャラが「おフランス」と言いながら一人称がmeなのをが面白い事がわかったのは中学に入ってから。


288:デフォルトの名無しさん
07/12/08 22:57:24
で、Erlangの話はどうなったのさ

次のリリースではiconv同梱にしてワイドキャラクタ用関数実装とかしてくれたらなあ
遊びで使ってるユーザが自分でやるにはちと荷が重い

289:デフォルトの名無しさん
07/12/08 23:12:15
どっかのblogで本が取り上げられたからお客さんが増えるかな・・・

290:デフォルトの名無しさん
07/12/08 23:56:28
日本語が読めない人が読むコードのコメントに日本語で書くやつはバカ
英語が不自由な人が読むコードのコメントに英語で書くやつはバカ

291:デフォルトの名無しさん
07/12/09 00:55:22
>>290
割と柔軟だなw

292:デフォルトの名無しさん
07/12/20 13:55:16
コメントを書かなければ何語に不自由な人に読まれても大丈夫

293:デフォルトの名無しさん
07/12/21 01:56:47
>>279
腐ったインターフェイスのアプリでも我慢して使えって話をされているような・・・

294:デフォルトの名無しさん
07/12/21 07:23:48
間違った英語でグダグダ書くヤツは大馬鹿

295:デフォルトの名無しさん
07/12/28 11:48:27
age


296:デフォルトの名無しさん
08/01/08 08:25:16
ニュース貼っときます。
Amazonが、Erlangで動作する,オンラインDBサービス「Amazon SimpleDB」の限定ベータ提供を開始

Amazon,オンラインDBサービス「Amazon SimpleDB」の限定ベータ提供を開始
URLリンク(itpro.nikkeibp.co.jp)

AmazonのSimpleDBとIBMのBlue CloudがCloud Computingの発展を促す
URLリンク(www.infoq.com)

Amazon SimpleDB - Limited Beta
URLリンク(www.amazon.com)

What You Need To Know About Amazon SimpleDB
URLリンク(www.satine.org)



297:デフォルトの名無しさん
08/01/10 18:05:44
コメント書かないとわからないコードを書くヤツは馬鹿です。
コメント書いてもらわないとコードが読めないヤツも馬鹿です。

298:デフォルトの名無しさん
08/01/12 15:08:37
IDEが来ますぞ
URLリンク(www.infoq.com)

299:デフォルトの名無しさん
08/01/21 16:26:21
Erlangの本買ったよage


300:デフォルトの名無しさん
08/02/02 22:16:27
Erlangは出来る子なの?

301:デフォルトの名無しさん
08/02/04 18:25:08
出来ることを期待されている子だ

302:デフォルトの名無しさん
08/02/05 09:37:36
Ericsson内で十分実績あるだろ?

303:デフォルトの名無しさん
08/02/07 14:47:13
JavaScriptを並列処理言語Erlangへコンパイルする"ErlyJS"とは
URLリンク(journal.mycom.co.jp)
> ErlyJSの開発ははじまったばかりだ。今後の展開に注目していきたい。

304:デフォルトの名無しさん
08/02/08 00:39:25
Programming Erlang の日本語版もうすぐ出るよ
URLリンク(ssl.ohmsha.co.jp)

・著者:Joe Armstrong 著
榊原一矢 訳
・定価:4620円(本体4400円+税)
・B5変 480頁
・ISBN 978-4-274-06714-3
・発売日:2008/02

章立ては原書と一緒みたいだね

305:デフォルトの名無しさん
08/02/09 18:11:14
>>303
JavaやC#をErlangへコンパイルできるようにならないかな。

306:デフォルトの名無しさん
08/02/09 22:43:41
ならないかな ← してみよう

307:デフォルトの名無しさん
08/02/10 00:49:35
>>305
Java を Erlang VM で動かしたいという事なら、逆の方が良いんじゃないかな…

308:デフォルトの名無しさん
08/02/12 22:45:24
ここは質問 Ok なんすかね? 最近かじってるんですが、
erlang って prolog に似てるけど prolog と違って先行評価ですよね。
ということは差分リストとかは使えない、ということでしょうか? 例えば
X = [1,2,3 | Y].
などとした場合、Y が未束縛だとエラーになってしまいます。
つか、先行評価なら Lisp の quote みたく評価を回避する手がありそうですが
見つけられませんでした。

309:デフォルトの名無しさん
08/02/13 02:11:19
> X = [1,2,3 | Y].

何がしたいのかをもうちょっと具体的に書いてくれると、
何か教えることができるかもしれない。

310:308
08/02/13 21:54:43
レスが遅れてすんません。平日は時間が取れなくて。

>>309
何がしたいとかではなくて、Prolog の本には必ず出てくる「差分リスト」という
データ構造が Erlang で使えるのかどうか気になっただけです。
差分リストは Prolog では常套的な手法なんですが、これが使えないと実現できない機能が
あるということもないので、使えないからダメとかいう問題ではありません。

差分リストを説明するのはちょっと難しいので省略します。私も Prolog が得意なわけじゃないのでw

311:デフォルトの名無しさん
08/02/17 14:42:44
>>304
d。この出版待ってた。

312:デフォルトの名無しさん
08/02/19 21:37:20
これでDB組んだらすげぇ並列になるのか?

313:デフォルトの名無しさん
08/02/20 02:22:38
>>310
亀レスだがもう見てないかな?
遅延評価は、以下のようにclosureを使えば出来る。
URLリンク(d.hatena.ne.jp)

ただし、差分リスト実装のためには、データフロー変数が必要かと。
Oz言語での例は、以下の通称ガウディ本にあり。
『コンピュータプログラミングの概念・技法・モデル』
(Concepts, Techniques, and Models of Computer Programming)


314:デフォルトの名無しさん
08/02/20 11:07:18
>>312
IOが超ボトルネック


315:310
08/02/20 22:24:42
>>313
時々は見てます。クロージャで包んで遅延評価ですか、ナルホド。
私が意図したものとは違うけど、ちょっと面白いですね。
大モトのブログの記事を読むと、たらい回しプログラムは遅延評価が特に
必要というわけではないのに (もともと意味のない処理みたいだけどw) あえて
クロージャにする意図は実行効率にあるようで、その辺も興味深いです。

それと、ガウディ本の存在は知ってましたが分厚いので今まで敬遠してました。
Oz も どうせ Yet Another なハイブリッド言語だろうくらいにしか思って
なかったのですが、この辺見るとなかなか侮れない感じですね。
URLリンク(www.ueda.info.waseda.ac.jp)

ガウディ本、読んでみます。有難うございました。

316:310
08/02/25 22:00:56
ワタシの書込み以降、過疎ってるので age で賑やかしに。

>>304 の人が書かれてた「プログラミング Erlang」日本語版、Amazon から届きました。
まだパラパラとめくっただけだけど、やっぱエリクソンで長年使われただけあって
ライブラリやフレームワークが揃ってる感じで、関数型言語としては業務システムの
記述に広く使われ得る第一候補の言語と期待されるのも分かる気がします。
はっきり言って Erlang って言語オタクな人にとっては簡単すぎてつまらないと
思われがちかもですが、この言語のポテンシャルは別のところにあるんですね。

>>312 >>314
なんか Mnesia という専用の DBMS があるみたいですね。
耐負荷性とかはまだ分からないけど。

317:デフォルトの名無しさん
08/03/12 13:32:12
>>316
> なんか Mnesia という専用の DBMS があるみたいですね。

参考に、Erlang で実装されたJabberサーバーで、Mnesia データーベースを
使用してデータの冗長化を行うことが出来る、との事。
URLリンク(dsas.blog.klab.org)


318:デフォルトの名無しさん
08/03/12 13:58:38
>>315
スレチかもしれないけど、ガウディ本の英語版PDFは以下で入手可能。
("Concepts, Techniques, and Models of Computer Programming pdf"で検索した)

URLリンク(www.google.co.jp)


ただし、計算モデルという考え方にまだ馴染みが無い方には日本語版がお薦め。
日本語版の本と、英語版PDFとを併読したら理解し易いと思う。

319:デフォルトの名無しさん
08/03/14 11:00:15
まつもとゆきひろ氏が、Erlangに言及している部分。

まつもとゆきひろ×小飼弾対談 生き残るエンジニアとは?
URLリンク(www.atmarkit.co.jp)

Q:いま注目している言語があるか?
A:日本語。英語以外でコンピューサイエンスを学べる日本は世界でもレアな国。
  20年後、Rubyを学ぶ際に英語を学ばないとRubyを学べない時代がくるかも
  しれないという心配がある
  Ruby以外ではErlangなど。なぜErlangか。将来のマルチコアに対応するには、
  いまのスレッドモデルでは限界がある。Erlangのプロセスモデル/アクター
  モデルというのは、その答えになるかもしれない。Rubyのようなプログラムに
  Erlangの機能を組み込むことを考えている。



320:デフォルトの名無しさん
08/03/14 11:28:30
聞き飽きたぜ

321:デフォルトの名無しさん
08/03/14 23:27:14
GUIライブラリとかってある?

322:デフォルトの名無しさん
08/03/14 23:37:08
>>321
URLリンク(www.erlang.org)

323:デフォルトの名無しさん
08/03/16 22:16:26
質問があります。

Erlangを覚えようと思うんですけど、手続き型言語しか使えません。
Lispを覚えてから学ぶべきですか?

324:デフォルトの名無しさん
08/03/16 22:21:02
>>323
それはオススメできません
Erlangに行く前にLispだけで一生が終わってしまいそうです

なので出回ってる書籍や公式のチュートリアルで勉強して
分からないところをこのスレで聞いたらみんなが幸せになれると思います

325:デフォルトの名無しさん
08/03/17 00:35:15
>>324
遅レスですが、ありがとうございます。


326:デフォルトの名無しさん
08/03/17 21:41:15
すぐ真上のレスに遅レスはないだろう。。

327:デフォルトの名無しさん
08/03/18 06:24:58
まぁ、当事者のリアルタイムの感覚がそのまま出たんだろう。
5分後にレスもらってたのに、つい2時間も放置しちゃって・・・、みたいな。

328:デフォルトの名無しさん
08/03/26 21:11:48
質問があります。
以下のコードをターミナルで動かしても問題ないのですが、Eclipseで動かすと良くわからないエラーがでます。

-module(receiver).
-export([receiver/0]).

receiver() ->
receive
Msg -> io:format("~necho: ~p",[Msg]),
receiver()
end.

これを
Pid = spawn(receiver,receiver,[])

とやると、
{get_geometry,columns}
=INFO REPORT==== 26-Mar-2008::20:58:06 ===
erlide_reshd:handle_io_request: Unexpected IORequest:{get_geometry,columns}
{requests,[{put_chars,#Bin<3>},{put_chars,#Bin<60>},{put_chars,"
"}]}
=INFO REPORT==== 26-Mar-2008::20:58:06 ===
erlide_reshd:handle_io_request: Unexpected IORequest:{requests,
[{put_chars,<<"** ">>},
{put_chars,
<<"exception error: no match of right hand side value <0.908.0>">>},
{put_chars,"n"}]}

というエラーが発生します。
昨日勉強を始めたばかりの初心者なので、簡単に教えて頂けませんでしょうか?
よろしくお願いします。

329:デフォルトの名無しさん
08/03/26 23:33:26
erlideは触ったことないけど、これかな?
URLリンク(www.erlang.org)

いずれにしても、最初のうちは統合環境を使わないほうがいいと思います。

330:デフォルトの名無しさん
08/03/27 00:05:45
>>329
詳しくないんですが、確かにioの可能性がありますね。
Errorもそんなこと言ってますし。

とりあえず確認したところ、Eclipseでのコーディングには問題がないので、
それをコンパイルして、beamファイルのある場所でErlangをターミナルから使うってのが
一番手っ取り早かったです。

他の言語はいくつか使えるんで、いきなりIDEを使ってたんですけど、
やっぱりセオリー通り、普通のエディタで書くべきかもしれないですね。

ありがとうございました。
原因や解決方法が分かったらまた書き込んでおきます。

331:デフォルトの名無しさん
08/03/29 05:11:08
セオリーは「いきなりIDEを使わない」ではなく「いきなり完成度の低いツールを使わない」だ。
完成度の高いIDEならいきなり使っていい。

332:デフォルトの名無しさん
08/04/14 22:12:08
Erlangで作ったプログラムを配布する場合、単独のexe形式にできますか?


333:デフォルトの名無しさん
08/04/15 00:59:21
Erlangがインストールされてないマシンで動かせるかってこと?
もしそうだとしたら、無理だと思う。

334:デフォルトの名無しさん
08/04/15 07:54:34
>>333
回答ありがとうございます。
無理ですか。残念。
他の言語を検討してみます。


335:デフォルトの名無しさん
08/04/21 23:14:47
「小飼弾のアルファギークに逢ってきた」っていう本に
Dave ThomasがErlangの本を書いているって書いてあったんだけど
詳細が分かる人いますか?

07年7月に出版予定とか書いてあったけど、どうもAmazonの洋書でそれらしいものがない。

336:デフォルトの名無しさん
08/04/21 23:36:22
だんに聞けば分かるんじゃね?

337:デフォルトの名無しさん
08/04/22 14:14:55
Erlangの.beamファイルって、違うマシンでも動くの?

.erlをコピー、コンパイル、起動ではなく
.beamをコピー、起動とできるかということです。

338:デフォルトの名無しさん
08/04/22 20:11:03
>>335
それはdaveが書いた本じゃない。
programmers bookshelf というところ(daveがからんでいる)
からもう出版されてる。
日本語訳もでたよ。

339:デフォルトの名無しさん
08/04/22 22:18:29
プログラミングErlangのp.345の lib_chan_auth の中で使われてる
lib_md5って本に載ってないみたいだね。

親切な人が書いてくれたみたい(Mac FireFoxじゃ見れなかった)。
URLリンク(forums.pragprog.com)

340:デフォルトの名無しさん
08/04/23 20:21:38
ちゃんと勉強してるやつがいることに驚いた。
このスレは基本的にwikipedia的な情報についてばかり議論してるからなwwww

341:デフォルトの名無しさん
08/04/23 23:02:30
erlangのライブラリのリファレンスってどこにあんの?
公式にあるかと思ったら見つかんね

342:デフォルトの名無しさん
08/04/24 00:43:11
URLリンク(www.erlang.org)

343:デフォルトの名無しさん
08/04/24 08:51:20
ありがとう!

344:デフォルトの名無しさん
08/04/25 14:20:31
質問です。
「プログラミングErlang」のp.203にある関数
lib_misc:string2value(Str)
の実装が載っておりません。ググってもでてこなかったです。

機能としては、
"list_to_tuple([2+3*4 , 10+20])"
という文字列を渡して、この命令をさせるものです。
結果は
{14,30}
と今回はなります。
これはどのように実装するべきでしょうか?
文字列処理からapply()を適用することが思い浮かんだのですが、
私の技量では無理そうです。

お助け下さい。よろしくお願いします。

345:デフォルトの名無しさん
08/04/26 07:31:42
Erlangはド素人。レス入れるのも恥ずかしいが、
使ったことあるモジュールを組み合わせると、

test(Str) ->
{ok,Ts,E} = erl_scan:string(lists:append(Str,".")),
{ok,P} = erl_parse:parse_exprs(Ts),
P.

までは来る。ヒントにならないかなぁ。

346:デフォルトの名無しさん
08/04/27 21:43:07
本家サイトに本に載ってないソースがありました。
その中に、これも含まれているようでした。

>>345
それは便利そうですね。
簡単に試してみたのですが、別の用途に使えそうです。
ただ、今回の処理にはちょっと不向きっぽいかもしれませんな。

ありがとうございました。

347:デフォルトの名無しさん
08/04/28 05:39:41
>>346
ソースコードたしかにありました。これはどういう意味なのですか。
Bindings = erl_eval:new_bindings(),

348:デフォルトの名無しさん
08/04/28 06:07:31
>>346
string2value/1 は parse + eval なのですね。私は向井さんのPDFで
ソケットの読み書きの部分だけ切り取って使ってしまってソースの細部は
全然勉強していませんでした。Prologで共用データベースとしての
Prologサーバと通信しながら運用しているので、Erlangとも同レベルで
と思ってはいたのですが、この部分が分からず放ってありました。
一挙に解決しました。ありがとうございます。

349:デフォルトの名無しさん
08/04/28 06:42:27
質問です。論理変数を持つPrologではサーバーとの交信は
1)クライアント側でQuery P (論理変数を引数に持つ)を一旦文字列化して
2)サーバに送信。
3)サーバは文字列を受信したら、これを parseして P1 を構成。
4)これを call(P1) した後、
5)P1 を文字列化して
6)クライアントに返信。
7)クライアントは受信した文字列をparseしてP2を作り、
8)P と P2 を単一化する。これで論理変数に解が得られます。
エラー時のexception処理などを無視して書きましたが、大体このように進みます。
関数型、ここでは、Erlangですが、典型的なハンドリングを教えてください。

350:デフォルトの名無しさん
08/04/28 08:22:43
>>347
俺も初心者だから良く分からんけど、本家マニュアルによると

bindings(BindingStruct) -> Bindings
Returns the list of bindings contained in the binding structure.

binding(Name, BindingStruct) -> Binding
Returns the binding of Name in BindingStruct

ってなってるね。
たぶん、bindingsで返したものに、どんどん新しい値を加えていくような感じなんじゃない?
erl_scanのほうは分解するみたいですね。こっちのほうが使えそう。

>>349
client(引数) ->
 送りたいデータを作成
 送り先PID = spawn(送り先。この場合はserver関数),
 送り先PID ! {自分のPID , 送りたいデータ},

 receive         %serverからの返信を受けるため
  {送り先のPID, 受け取りDataタイプ} ->
    受け取ったデータの処理
 end.

server(引数) ->
 receive
  {clientのPID, 送られたData} ->
   送られたDataの加工,
   clientのPID ! {serverのPID, 送るデータ}
 end.

今手元に資料が無いんで、間違ってるかもしれん。自分自身のPIDを相手に送って、返信先を教えるっぽいね。

351:デフォルトの名無しさん
08/04/28 08:28:50
>>350に訂正
よく説明読むと>>347へのレスは間違いっぽい。

どっちもBindingStructから値を取り出すためのものみたいだね。
上はlistで、下はkeyでvalueを指定するようなもんか?
夜試してみます。

まず、Bindingが何なのかが良く分からん。
理解してないのに適当なこと言ってスマソ

352:デフォルトの名無しさん
08/04/29 18:01:52
register(atom,Pid)
って、Pidが自分のノードの物じゃないときは無理?

353:デフォルトの名無しさん
08/04/30 07:14:39
>>349
サーバーが返すのはPではなく評価値ということになるが
7) のP2のところを V = に値を保持すると置き換え
8) の単一化を削ると
関数型もまったく同じではないだろうか。Vに値を保持できないと
論理型に比べて使い勝手少々悪いのかな。



354:デフォルトの名無しさん
08/04/30 09:43:17
プログラミングErlangの中盤のコードって難しすぎるよな。
IRCLiteとか関連する章を含めたら、あきらかに初心者向けの量じゃない。

355:デフォルトの名無しさん
08/05/01 17:08:23
リファレンスマニュアルと平行してやらないと無理だよ。
あの本は「載ってないとこは調べろ」みたいなことが書いてあるじゃん。

356:デフォルトの名無しさん
08/05/15 00:53:33
webページ作ったから、よかったら利用してみて下さい。
URLリンク(erlangworld.web.fc2.com)

357:デフォルトの名無しさん
08/05/15 00:55:59
>>356
やるじゃん

358:デフォルトの名無しさん
08/05/15 00:56:26
>>356
これはいい感じ。プログラミングErlangとあわせて読むか

359:デフォルトの名無しさん
08/05/15 00:58:23
あれ?Erlangのwikiってなかったっけ?

360:デフォルトの名無しさん
08/05/15 01:01:58
乙。しかし、charset位は指定して欲しい。
古くさいブラウザは自動認識してくれなかったりするのよ。

361:デフォルトの名無しさん
08/05/15 01:15:07
文字コード直した。

とりあえず、Erlang信者を増やすことが俺の宿命。

362:デフォルトの名無しさん
08/05/15 01:30:43
あんまり気負うとつかれちゃうからまったりいこうぜ


363:デフォルトの名無しさん
08/05/15 02:08:21
サンプルプログラムが多いから分かりやすいな。

364:デフォルトの名無しさん
08/05/15 20:33:16
>>361
arigato. 文体が平易なのがいいね。ちょっと勉強してみるよ。

365:デフォルトの名無しさん
08/05/15 23:10:42
早速こけたので報告。
Mac OS X 10.5.2 Intel MacBookPro
.configureでエラー
Odbc : ODBC library - link check failed

./configure --enable-darwin-64bit --with-gd=/usr/local
でOK。そういや64bitでした。

366:デフォルトの名無しさん
08/05/15 23:58:35
>>356
chapter4ってリンク切れしてるけど仕様?


367:デフォルトの名無しさん
08/05/16 00:37:16
まだ作ってない。スマソ
もともとテンプレートをBIFの章のコピペで作ったんだけど、
構成変えちゃったからリンク切れになってる。

>>365
そういうのはすごい助かる。
更新の時に役に立つ情報は加えておくよ。
ありがとう。

368:デフォルトの名無しさん
08/05/16 15:10:40
いいね。

369:EW”管理”人
08/05/17 10:35:57
ちょっと質問があるんだけど、
マニュアルの和訳は、直訳がいい?
それとも、プログラム解説とか付け足したほうがいいい?

370:EWの人
08/05/17 10:39:42
言い忘れましたが、今度からサイトに関することはコテ付きで書き込みます。
そのほうが分かりやすいと思うので。

371:デフォルトの名無しさん
08/05/17 11:24:53
>>369
わかりにくいところは訳注とかで解説つけるといいんじゃないでしょか

372:EWの人
08/05/18 23:39:36
ちょっと3日間ぐらい閉めます。
アクセスできると思いますが、サイト構成がぐちゃぐちゃかもしれません

373:デフォルトの名無しさん
08/05/20 06:31:56
>EWの人
おお、すばらしいですね。
俺は飽きっぽいので翻訳すぐ飽きちゃった。
翻訳とかは結局、個人の力によるところが大きいのが現状だと思います。
EWの人は大きな戦力だと思います。
ぜひ、サイトの運営をながーく続けてください。

374:EWの人
08/05/20 10:28:19
ありがとうございます。

体裁を整えているのですけど、WindowsのIEだとずれてますね。
友達のを使わせてもらって始めて気が付きました。
FireFoxよりめんどい。

375:デフォルトの名無しさん
08/05/20 10:50:54
cssでするならもそっと単純なレイアウトにしないとブラウザに因っては血涙でるからねぇ。
ちょくちょく覗かせてもらいますんでがんばってくだされ。


376:EWの人
08/05/20 11:44:11
自分の勉強も兼ねて気長にやっていきます。

あと、サイトに変なところ(間違い、分かりにくいところ、レイアウトが壊れてるなど)があったら、
このスレにでも報告してもらえると助かります。
間違いはバザール方式で探したほうが早いですから。

377:EWの人
08/05/20 13:09:02
トップページのwindows IE google欄を修正しました。

378:デフォルトの名無しさん
08/05/20 16:40:36
>EWの人
Install Erlangのページにtypo。
Dounloadサイト → Downloadサイト


379:EWの人
08/05/20 20:59:54
ありがとうございます。
今日、明日と少しやることがあるので、更新は明後日以降になります。

あと、webページ制作に詳しい人にレイアウトのヒントを貰ったので、
少し構成を変えます。

380:EWの人
08/05/22 15:56:56
構成を変えました。
menu部分とかは、変更がうざったいからスクリプトで生成するようにしました。

リンク切れ等がありましたら、ご連絡下さい。

381:デフォルトの名無しさん
08/05/22 18:02:44
>>380
Erlangの勉強を始めたばかりの者です。 とてもいいページですね。
早速勉強がてら、リンク切れ検出をErlangで書いてみようとしました。
HTTP getまではすぐ書けたものの、レスポンスデータから例えば
URLリンク(erlangworld.web.fc2.com)
という文字を抜きだすところで方法を模索中。
まだ文字データの扱いをよく理解していないのですが、参考になる情報を
ご存知の方が教えて頂けると有難いです。

全体の方針は、
URLリンク(erlangworld.web.fc2.com)
 以外で始まるurlについては1次リンクのみチェックする。
(他サイト内のリンク切れまで深追いすると切りが無いので)
URLリンク(erlangworld.web.fc2.com)で始まるurl文字列を記憶しておいて
2回目に現れた同一urlから先はチェックしない。

参考にさせて頂いたurl:
URLリンク(blog.mikage.to)


382:EWの人
08/05/22 19:58:20
利用して頂いてありがとうございます。

たぶん正規表現を使ってurlを抜き出すのでしょうね。
正規表現 url あたりでググったら、urlを抽出するパターンが出てくると思いますよ。
あとはそれをhtmlファイルの各行にマッチさせるのだと思います。

あとは抜き出したurlにアクセスを繰り返すのだと思います。

ただ、並列処理の部分は作り合わせなのでリンクが切れています。
今検索すると、そこばかりが引っかかってしまうかもしれません。

383:デフォルトの名無しさん
08/05/22 21:30:28
>>382
情報、有り難うございます。
正規表現 url でググったら、perl (まだ使ったことが無い^^;)での例がありました。
perl、正規表現などを基礎から一回やってみた方が良さそうですので、ぼちぼち進めてみます。


384:EWの人
08/05/26 20:28:24
今日は予定が開いていたので、少し更新しときました。

385:デフォルトの名無しさん
08/05/27 23:35:38
ブームが去ったのに、ここだけ盛り上がってるな

386:デフォルトの名無しさん
08/05/28 00:16:19
ブームなんてあったのか!?
流行がどうこうというより、面白い言語だから使うだけさ

387:デフォルトの名無しさん
08/05/28 00:18:47
アーランはツウィッターブームと連動してるんだよ。

388:EWの人
08/05/28 23:11:16
ちょっと更新しときました。

389:デフォルトの名無しさん
08/05/30 18:59:31
ちょっと質問です。
1> List = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,......1,2,3,4,5,6,7,8,9,0].
...
2> io_lib:format('~p',[ List ]).
のような例でListの要素が多くその表示文字数が行の限界(80文字か)に
達すると、勝手に、 ,\n 3,\n 4, というように改行を挿入してしまうのですが、
これを抑制する方法はありませんか。

390:EWの人
08/05/30 19:50:41
ちょっと試してみましたが、io_libを使うと全く違う形で出力されました。
> io_lib:format("~p~n",[List]).
[[91,
["1",44,"2",44,"3",44,"4",44,"5",44,"6",44,"7",44,"8",44,
"9",44,"0",44,"1",44,"2",44,"3",44|...],
93],
"n"]

io:formatだとこんな感じになりましたよ。
~wを使うと表示幅いっぱいに出力されました。

> io:format("~p~n",[List]).
[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0]
ok
7> io:format("~w~n",[List]).
[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]
ok


391:デフォルトの名無しさん
08/05/30 21:13:26
>>390
問題は、TCP/IPのハンドリングで
tcp_gen:send(Socket,[term_to_list(Reply)]),
の場合です。
クライアントがPrologでこの言語で読み取れる
書式に出力したい。
関数term_to_list/1の中で>>389
io_lib:format/2が使われています。

Replyがリストの場合に(例えばos:cmd("ps -ale") ) のような場合に、
上記の変形がおこり、クライアントのPrologから読み取れなくなります。

392:391
08/05/30 21:16:08
string:tokens(os:cmd("ps -ale"),[10,13]) のような場合ですね。

393:EWの人
08/05/30 22:53:23
gen_tcpの関数ですね。

send(Socket, Packet) -> ok | {error, Reason}
Types:
Socket = socket()
Packet = [char()] | binary()

このPacketを[char()]、つまりListとしたいのだが、
予想していない変換が起きてしまうということでよろしいでしょうか。

os:cmd()で実行した結果を
string:tokens()によってぶった切る際にゴミが出るとなると、
それはBIFの問題でしょうね。

あと、個人的に一番怪しいなと感じるのは ~p を使っていることです。
これはテキストを整形する際に使うのですが、その整形の際にゴミが入っているのじゃないでしょうか。
他のシーケンス ~w とかを試してみてはどうですか。

頼りないアドバイスで申し訳ありません。

394:391
08/05/31 04:06:01
>>393 >>390
お騒がせしました。
io_lib:format('~w',[ List }),
で解決しました。ありがとうございました。
tcp_gen:ではなくてgen_tcpでしたねw

もう一つ質問。Prologクライアント、Erlangサーバのケースを
出しましたが、Erlangクライアント、Prologサーバだと、:
Prologの項表現は
 prolog_call({append,[1,2],[3,4],X}),
の他にないのでしょうか。Host、Portともに既定値の場合です。
期待値は {append,[1,2],[3,4],[1,2,3,4]} ですね。

395:391
08/05/31 04:10:57
間違えました。
{ append,[1,2],[3,4],X } のXも問題なのでした。項を
関数評価させないことと、変数をエラーにならず
いかに表現するかが課題です。

396:デフォルトの名無しさん
08/05/31 04:57:18
変数にエスケープ文字を付加しておいて、それをStringに
なってから変換(削除)するのかな。
それから、
リストの各要素もErlang側のString処理かあるいは、
Prologに渡ってから { } -> Prolog項 変換をしなくては
ならない。

397:デフォルトの名無しさん
08/05/31 07:12:54
-module(yobi).
-export(['曜日'/1,'曜日検索'/1]).
'曜日'(20080531) -> '土曜';
'曜日'(20080601) -> '日曜'.
'曜日検索'(日付) -> '曜日'(日付).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
奇妙なことに、上記のプログラムは正常に働きます。
?- X は c:c(yobi).
X = {ok,yobi}
?- X は yobi:曜日検索(20080601).
X = '日曜'
という具合に。
Prologからsend時のアトムは必ずシングルクォーツで
囲まれている必要があります。
erlang側で writeq や formt('%q',[...}) に当たる機能を
見付出せていないので
20080601 と '20080601' の区別を付けられず今のところ
数値情報は整数表記に限っています。

398:デフォルトの名無しさん
08/05/31 07:45:20
-module('曜日').
-export(['曜日'/1,'曜日検索'/1]).
'曜日'(20080531) -> '土曜';
'曜日'(20080601) -> '日曜'.
'曜日検索'(日付) -> '曜日'(日付).

でも大丈夫ですね。
?- _曜日 は 曜日:曜日検索(20080601).
_曜日 = '日曜'
多バイト文字だけで構成されるトークンが変数になるというのは
仕様とは思えないから、次のバージョンで使えなくなる
かも知れませんね。

399:EWの人
08/05/31 08:43:20
Erlang以外の言語にタームを直接送信するというのが、
まず不合理なような気がします。
Xについても、指定する理由が良く分かりません。

複雑に考えずに、
asciiコードの配列に純粋に変換してみてはいかがでしょうか。
区切りは、特殊な記号(例えば@など)で作ってみてはどうですか。

たとえば、append@12@34

append
@
12
@
34

として、prolog側で@を目印に分解すると都合が良さそうな気がします。

上記の方法だとlistsの関数を使って変数同士を合体させるのですかね。
append(ListOfLists) -> List1

400:EWの人
08/05/31 10:48:05
間違えました。
上の場合だとリストへの自動変換を行なってくれる
lists:concat(Things)のほうが良さそうです。

> lists:concat([doc, '/', file, '.', 3]).
"doc/file.3"

401:デフォルトの名無しさん
08/05/31 22:32:25
>>399
>>395
send(Socket,io_lib("~w(~w).",[prolog_call,[append,[list,1,2],[list,3,4],[var,'X']]])
で解決するのが自然かなと。
則ち Prolog:append([1,2],[3,4],X) === Erlang:[append,[list,1,2],[list,3,4],[var,'X']]
と変換する。
Prologからの解は
"[append,[list,1,2],[list,3,4],[list,1,2,3,4]])"
でしょうから、receive して Str にStringを得て、
[_,_,Str2|_]=string:tokens(Str,[32,63]),
[_,_,_,X] = lib_misc:string2value(Str2),

で Erlangの変数 X にPrologのappend/3の第三引数が得られます。

402:デフォルトの名無しさん
08/05/31 22:49:05
間違えました。
string:tokens(Str,[32,63]) は要りません。これは、
GET /cgi-bin?append.... の情報を読み出す場合の操作でした。
Prologの解の返信は HTTP/1.1 200 ok\nから始まり、2行改行が続いた後に
"[append,[list,1,2],[list,3,4],[list,1,2,3,4]]" が来るというプロトコルになっています。
したがって\nで区切ってStringのリストとして空行の後のString Str を
[_,_,_X] = lib_misc:string2value(Str) すればよい、ということになります。

403:EWの人
08/06/01 00:03:30
lib_misc:string2value(Str)
は「プログラミングErlang」にあった関数ですね。
あまり良く覚えていませんけど(笑)
ようはStrが純粋なErlangのタームになったら
パターンマッチでXに欲しい値が入ってくるということでしょうか。
今回は[list,1,2,3,4]ですか。

正直なところ、私もこの関数がどういう原理でタームを返すのか
コードを読んでいないから良く分かりません。
したがいまして、現段階で納得のいく回答はできないと思います。
申し訳ありません。

たしか、ファイルにあるErlang項を読み出す方法がありました。
多少オーバーヘッドがあってもよろしいのなら、
list -> write file -> read file -> term
という変換も出来るかもしれませんね。

list -> binary -> term
はたぶん無理じゃないかと思います。
やったことないですけど。

もう少し勉強してみます。

404:デフォルトの名無しさん
08/06/01 04:24:16
>>401
var(T) や list([1,2,3]) はどうするのw


405:デフォルトの名無しさん
08/06/01 04:55:36
>>404
[append,[l_1,2],[l_,3,4],[v_,x]]
などどうでしょうw
さすがに,関数名に v_ l_ を使用している人は少ないでしょう。
',' や ';' も必要ですね。
( [append,[l_,1,2],[l_,3,4],[v_,x]],[reverse,[v_,x],[v_,y]] ) とやると
lib_misc:string2value(Str) で最終的に評価されて、
[reverse,[l,1,2,3,4],[l_,4,3,2,1]] が解になってしまいます。本当は、
[append,[l_,1,2],[l_,3,4],[l_,1,2,3,4]],[reverse,[l_,1,2,3,4],[l_,4,3,2,1]] が欲しいのですが。

406:デフォルトの名無しさん
08/06/01 05:53:13
>>397
多バイト文字をバイトに分解して 8進表記で 300 以下になるバイトを
含むものはやはり、エラーとなるようです。
例 '評価'(評価) -> shop:cost(評価).

評価 は \311\276\262\301 になります。 276 262 を含みます。
ということで、やはり多バイト文字は使えませんね

407:デフォルトの名無しさん
08/06/01 06:10:29
第1バイトがasciiコード >=128+65 かつ =< 90 の時は
変数として、 >= 128 + 97 の時はアトムのアトムとして
認識しようとしている。文字の中に英記号コード + 128 を
含むとエラーということのようです。

408:407訂正
08/06/01 06:12:20
アトムのアトムとして -> アトムとして

409:デフォルトの名無しさん
08/06/01 06:32:42
>>401
既存のProlog述語は多バイト文字の使用が当たり前だし、
やはり、Prolog側にErlangインターフェイス述語を用意
するのだろうね。既にあるProlog述語を利用するなら。
例 yobi(Hiduke,Yobi) :- 曜日(_日付,_曜日).
のような。必ずprolog_callのような述語で呼ばれるのなら、
>>399 >>400 のような簡易表現でやりとりするのも、
ありかな。XMLに変換して渡すというのもあると思う。
それ以前に、 Prolog項 -> Erlang関数 変換は簡単なので、
Erlangに移植する方が効率がよい場合も多いのではないか。


410:407訂正
08/06/01 06:36:11
>>409
日本語の移植が困難なのでこんな試みをしているのですw

411:デフォルトの名無しさん
08/06/01 06:38:58
名前、消すの忘れてた。 407とは関係がないレスでした。ちなみに使用ブラウザはおちゅーしゃ。

412:デフォルトの名無しさん
08/06/01 06:53:26
ところで、既存のPrologのコードでどうしてもここは
Erlangでというようなところがあるのだろうか。
どこかのサイトでリアルタイム性のあるスケジューリング問題を
挙げていたが。1996年のINAPでのErlangチュートリアルで
この問題が出ていたようだが、英語でよく判らなかった。


413:409
08/06/01 07:12:02
yobi(Hiduke,Yobi) :- 曜日(Hiduke,Yobi).
だった。訂正。


414:EWの人
08/06/01 09:50:36
Prologが分からないのに適当なこと言ってすいませんでしたwww
未熟なため、論点が少しずれていたようです。

そういえば、卒論をErlangで書くことになりそうです。

415:デフォルトの名無しさん
08/06/01 11:32:21
まあ歴史があってライブラリもそれなりに整備されてる、いい言語だと思うけど
データベースが付属しているってのが、こんなに便利だとは思わなかった

416:デフォルトの名無しさん
08/06/01 13:05:32
俺が使いたいライブラリは何一つ実装されていない。

417:デフォルトの名無しさん
08/06/01 15:11:26
ないものは作れ

418:デフォルトの名無しさん
08/06/01 16:02:25
スレに活気が溢れてきたな

419:デフォルトの名無しさん
08/06/01 16:22:22
>>417
実装されるまでErlangは使わない。
既に実装されている言語を使う。
目的をはき違えるなよ。

420:デフォルトの名無しさん
08/06/01 16:26:58
目的は多様な物だよ
人によって千差万別

421:デフォルトの名無しさん
08/06/01 17:00:27
>>410
日本語処理をするなら、君の方向でPrologでErlangのプリコンパイラを作るのがよさそう。
1) PrologでErlangクライアントブラウザを書く。
2) ブラウザ上でプリコンパイル。
曜日検索(_日付) -> 曜日(_日付). を er00001(Er00001) -> er00002(Er00001).
3) このブラウザでプリコンパイル時に以下のデータベースを作っておく。
erlangアトム(er00001,曜日検索).
erlangアトム(er00002,曜日).
erlang変数(Er00001,'_日付').
4) "c:c(er0002)" を実行。 則ちErlangサーバ側のコンパイル。
5) > 曜日:曜日('20080420').
で 関数評価。
6) erlangサーバにデータベースを基に変換された "er00001(Er00001)" が送信され、
7) erlangサーバからの値 { '20080420','日曜' } が得られる。
つまり、Erlang をアセンブラの位置づけで使う。



422:421
08/06/01 17:08:28
送られるのは "er00001('20080420')" でした。
それから、Prologのブラウザでは > c(曜日). ですね。送られるのが "c:c(er00002)" です。


423:デフォルトの名無しさん
08/06/02 20:32:12
erlideをインストールし直したら使えなくなった。
普通のエディタに書いてるのと変わらん。
勘弁して欲しいよ。

424:デフォルトの名無しさん
08/06/02 21:16:31
つ edlin

425:デフォルトの名無しさん
08/06/03 10:01:42
>>421 たとえば
foo(X) -> if is_list(X) -> lists:flatten(X); true -> X end.
のようなブロック構造を含む場合
エジンバラProlog では read できないと思うけれど、
やはりパーサを書くのかな。foo(X) の後の -> を :- に
書き換えれば read できるけれど。
それはともかく、私は receive .... end みたいな構文は好きでない。

426:EWの人
08/06/03 19:52:37
>>423
emacsとかどうですか。
私もerlideの調子が悪いので乗り換えようかと考えています。
URLリンク(www.erlang.org)
を参考にしたら簡単に入れられると思いますよ。

後日、手順をアップしておきます。

427:デフォルトの名無しさん
08/06/05 09:51:13
>>421
漢字ローマ字変換(_漢字文字列,_ローマ字文字列) :-
  concat_atom(['kakasi -Jj ',_漢字文字列],S1),
  shs(S1,,[_かな文字列|_]),
  かなローマ字変換(_かな文字列,_ローマ字文字列).
のような感じでアトムをローマ字アトムに変換したら。
同音異義からくる問題をどうするかだね。

428:427
08/06/05 09:52:50
  shs(S1,[_かな文字列|_]), ですね。
カンマが二個になっていた。

429:427
08/06/05 10:27:41
まちがえた。
concat_atom(['echo ',_漢字文字列,' | kakasi -Jj'],S1),
だった。

430:EWの人
08/06/05 15:44:38
新たに最新のEclipseを落として、Erlideをきちんとした手順(前は適当でした。すいません。)に沿って
インストールしてみたのですが、私の環境でもインストールできないようでした
(Eclipseを起動できなくなる)

普通に動かせる方がいたら、良かったら情報を提供していただけませんでしょうか。

431:429
08/06/06 05:28:50
kakasi -Jj で漢字はローマ字に変換できます。
ただし、かなを変換しないから、かなローマ字変換で補正する。
だから、最初のshs(S1,[_かな文字列|_]), の論理変数名は不適切で、
  shs(S1,[_かなを含むローマ字文字列|_]),
  かなローマ字変換(_かなを含むローマ字文字列,_ローマ字文字列).
でなくてはいけなかった。かなローマ字変換は
・ ローマ字はそのままスルーする。
・ ローマ字の前のエスケープ文字を削除。
・ 表を引いて、かなをローマ字に変換。
・ かなとローマ字以外の文字はそのままスルー
こういう特殊な述語だから、本当はかなローマ字変換という述語名は
適切ではありません。

432:431訂正
08/06/06 05:31:32
・ かなとローマ字以外の文字はそのままスルー
ではなく
・ かなとローマ字以外の文字は無変換
でした。

433:デフォルトの名無しさん
08/06/06 05:54:44
Prolog(サーバ) <-> Erlang(サーバ) の事を書き込んできましたが、
一応整理して、この話題を終了します。
PrologからErlangを呼び出したいケースは、
1) Prologの弱点の補正・協業。具体的には、並行プロセスでの実行。非同期処理など。
2) 全角文字の処理等をPrologによるブラウザ(IDE)で解決したい場合。.
ErlangからPrologを呼び出したいケースは、
1) Prologに圧倒的な資産があり、これをErlangで利用したい場合。


434:デフォルトの名無しさん
08/06/07 07:50:54
>>433
%Prolog
append([],X,X).
append([U|X],Y,[U|Z]) :- append(X,Y,Z).

%Erlang
append([],X) -> X;
append([U|X],Y) -> [U|append(X,Y)].
に変換するようなErlang関数が入ってるライブラリって
どこにありますか。
Erlangの歴史を考えれば絶対にあるよね。


435:EWの人
08/06/07 21:40:50
>>434
たしかに、ErlangとPrologは歴史的に繋がりがあると思いますが、
互換性が取れているという話は聞いたことがありません。
Prologユーザの絶対数が少ないので、言語としては似通っていても
Erlangではprologのインターフェースを持っていないのかもしれません。
pythonでいうexecみたいなコマンドがあったら便利ですね。
そうすればこんな悩みなんか一瞬で解決してしまうのにwwww


webページに関してなのですが、
現在までのコンテンツに
「バイナリ、ビットシンタックス」
「マクロ」
を追加して、一回整理をしようと思うのですが、
今までの範囲で他に必要なものはありますでしょうか。
作成しますので、良かったらお伝え下さい。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4773日前に更新/151 KB
担当:undef