[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 10/27 09:49 / Filesize : 225 KB / Number-of Response : 933
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型プログラミング言語Haskell Part9



1 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:41:29 ]
haskell.org
www.haskell.org/

日本語サイト
www.sampou.org/cgi-bin/haskell.cgi
www.shido.info/hs/

過去ログ
関数型プログラミング言語Haskell
Part1 pc.2ch.net/tech/kako/996/996131288.html
Part2 pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 pc11.2ch.net/test/read.cgi/tech/1193743693/
・2chの仕様により、行頭の半角スペースは表示されません。
 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。


496 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:42:38 ]
どんな時に便利ですか?

497 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:59:33 ]
モナドのすべて
ttp://www.sampou.org/haskell/a-a-monads/html/
の以下の部分を読むとわかるかも

Maybe というモナド
ひとつの例
リストもモナド

498 名前:497 mailto:sage [2008/08/17(日) 19:11:05 ]
第 II 部:標準的モナドのカタログ
の各モナドの利用場面や動機を見るのもいいかもしれない

499 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 19:15:59 ]
一応リストモナドやMaybeモナドが計算に使える、というのは理解しているつもりですが、
便利だからという理由以外にモナドをIO以外に使う理由はあったりしますか?
それだけの理由で使うには扱いが難しくて、プログラムを組む度に頭がオーバーヒートしそうになる

慣れの問題かそれとも理解不足か・・

500 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 19:25:15 ]
>>489
そこでmaybeもなどですよ。

501 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 20:06:22 ]
モナドという抽象的な枠組みを考えることで
IO, Maybe, List, etcの計算の合成を統一的に扱えるってのが最大の利点なんではないかと。

単に使うだけなら主に慣れの問題だと思う。
いろんな例を見て慣れていけば少しずつ理解もできていくんではないかと。

502 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 20:09:49 ]
自分の作ったモナド上でdo式を書くと、世界の法則を書き換えてるような気分になってちょっと面白い

503 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 20:33:06 ]
>>501
レス有難うです
慣れの他に密度の問題もあるかもしれないと思ったり。
他の言語より1行あたりの密度が濃いものになりやすい気がする。
というか濃縮されすぎてわけが分からなくなりやすい気がする。

504 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 20:38:12 ]
>>501
計算を統一的に扱うだけであれば、普通の型クラスでいいんですよね?

モナドは値ではなくて型コンストラクタに対するクラスなので、ちょっと違う
と思うんですが。



505 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/17(日) 20:39:51 ]
モナドっていうと仰々しいイメージがあるかもしれないけど、
所詮はただの代数的データ型とそのデータ型に対して一貫性あるAPIのセットに過ぎないよ。
ところで、 データ型とAPIのセット のことをなんて呼べばいいの?

506 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 20:40:10 ]
Stateモナドとかの(s -> (a,s))みたいな変な定義が気持ち悪い
型クラス(b,s) -> (a,s)に型bを部分適用したって考えれば意味は通るけど……

507 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 21:08:43 ]
>>505
それが「型クラス」、ではないのでしょうか?MonadやFunctorはちょっと
毛色が違うという認識は勘違いでしょうか?

508 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 21:17:01 ]
www.hyuki.com/haskell/20041228215300

Ord、Eq、Show などの データ型とそのAPIのセット は「型クラス」
Functor、Monad、MonadPlus などの データ型の構築子とそのAPIのセット は「型構築子クラス」

509 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 21:31:22 ]
それ単にOrdとかの『類』は*で引数をとらないけど
Functorの『類』は*->*みたいに引数をとる、って違いにしか見えない
分けて考えるのはおかしいと思う

510 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 21:37:45 ]
>>509
型クラスと型構成子クラスじゃ抽象度が違うよ。

511 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 21:49:13 ]
俺も>>509みたいに感じるなあ
抽象度が違うのは理解できるが

512 名前:507 mailto:sage [2008/08/17(日) 21:58:16 ]
抽象度の違う型クラスを持つことで、値の計算遷移とは別レベルの
遷移を持つことが可能だ、という印象を持つんですけどどうなんでしょうか。

普通の計算を行う裏側で別の次元での計算が行われ、且つそれが
結合法則を満たしている、というのがモナドの定義と考えるのは
どうですか?自分は圏論などのこと全く無知なのでHaskellの構文
からの直感的な印象だけなんですけど。

513 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 21:59:06 ]
じゃあ類が*->*->*(関数(->)とかタプル(,)とか)に対する型クラスとかは
もっと抽象度が違うので別の名前が必要なのか?型構築子構築子クラスとか。
有名な人が書いてるから鵜呑みにしてるだけなんじゃないの?

514 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:31:24 ]
>>512
だいたいあってんじゃね?
見えてる部分で適当に処理を書いたら裏で適当に処理してくれる、
普通のプログラミング言語じゃfor文やif文みたいな処理構造、
あるいはマクロとして提供されるものと同等の処理ができるんだけど、
実態は単に型クラスでしかないので俺定義できるし、高階関数使えるし、表記もシンプルで、いろいろ小細工が利くのが利点。
たとえば、IOみたいにコンストラクタを隠したりすれば脱出不可な構造を作れるってわけ。

結合法則を満たしているってのは、まぁ別に特別なことじゃない。
EqやOrdにも反射律とか推移則とか守らないといけないルールがあるけど、
よっぽどのことがない限り変な実装はしないだろうから、一般のプログラミング言語ではそこまで突っ込まない
でもモナドって実態がよくわかんないから、ルールを明記してる。そんだけでしょう。



515 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:45:32 ]
念のため補足。
>処理構造(略)同等の処理ができるんだけど
普通の言語では処理構造のものが、モナドが利用されてる例としてはErrorモナドとかContinuationモナドとかがあったね。

>よっぽどのことがない限り変な実装はしないだろうから、一般のプログラミング言語ではそこまで突っ込まない
浮動小数点の比較と等価性で違う実装がされてるとか、変な実装もあるけど。

個人的にはMonad則は、
値に関して順次実行できる何かで、値に対して何もしない処理もできる何かだ、というルールだと解釈してる。

516 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:50:03 ]
変な実装=全順序じゃない、と読み替えてくれ。
コンピュータのメモリ節約を考えれば生の浮動小数点型を使うのもまっとうな実装だわw

517 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:19:23 ]
ごめん、誤解を招くといやなのでもう一つ補足……
>値に関して順次実行できる何か
これは実行順序じゃなくて値の計算する方向を言ってるだけだよ。
g.f x がxにfを適用してgを適用するってのと同じことだよ。
実行順序は普通のモナドもIOモナドも方向は決まってないよ。

518 名前:初心者修業中 mailto:sage [2008/08/17(日) 23:37:55 ]
ん?
実行順序を明確にするのがIOモナドの目的の一つ
と認識していますが。

そういう意味ではないのかな…

519 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:41:24 ]
Haskellをみて日本のhaskellコミュって元気なの?
他の言語に比べて内と外をわけすぎるようなそんな印象をもってる。
なんでだろ?

520 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:58:38 ]
>>518
たとえば、
1:2:3:[]は、
1:2:3:[] → 1:2:[3] → 1:[2, 3] → [1, 2, 3]と簡約されるかもしれないし、
1:2:3:[] → [1, 2:3:[]] → [1, 2, 3:[]] → [1, 2, 3]と簡約されるかもしれない。
でも結果は一緒でしょ?

同じように、
Hello, Worldって出力 >> 一文字入力 >>= 前の文字を出力
みたいなのは、まぁ言ってみれば(不正確だけど)
[Hello,Worldって出力, 一文字入力, 前の文字を出力]みたいな並びにされる(と思われる。実装はカプセル化されていて不明)。
この並びがプログラム終了後にコンパイラにわたって、コンパイラがこれを順番に処理していく。

実はこの並びをプログラム終了後以外に評価する方法があって、それがUnsafePerfomedIOって言う関数。
getContentとかは実はこれを使って実装されている。
Unsafeという名前が示すように、素人にはお勧めできない。(getContent自体は普通に使える。)

521 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 00:02:55 ]
Maybeの特化にしか見えません

522 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/18(月) 00:25:49 ]
>>519
世界的に全く元気がありません。
ちょこっと変なライブラリを書いたと思えばそれっきり離れていっている人も多数。

523 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:36:55 ]
>>520

後者の簡約は型がおかしいし、1:2:3:[]ではなく、
f x = (unsafePerformIO $ print x) `seq` xで
f 1:f 2:f 3:[]だった場合、前者と後者の簡約順序ではprintの順番が違ってくる。
前者は3,2,1で後者は1,2,3

一方で(>>=)は最左最外簡約でも最右最内簡約でも
左から順にしか値が定まらないようになってる。

putStr "Hello" >>= (\ _ -> getChar) >>= (\ c -> putChar c)
(>>=)の右辺が関数だから左辺の値が定まるまでa >>= bが最終的な値に簡約できないようになっている。

524 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 03:17:18 ]
>>522
元気無い理由って何でしょうか。他に元気ある言語ってあるのかな。



525 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 04:14:24 ]
ruby

526 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 08:38:27 ]
>>520
> 1:2:3:[] → [1, 2:3:[]] → [1, 2, 3:[]] → [1, 2, 3]と簡約されるかもしれない。

型が滅茶苦茶だよ。

> この並びがプログラム終了後にコンパイラにわたって、コンパイラがこれを順番に処理していく。

意味不明。なぜプログラム終了後にコンパイラが出てくる。
ランタイムライブラリとごちゃまぜになているぞ。


527 名前:デフォルトの名無しさん [2008/08/18(月) 10:05:00 ]
Haskellにこういう奴が多い気がするのはなぜだ

528 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 10:21:37 ]
「こういう奴」と書けばどんな奴を指してるのか分かってもらえると思ってるような、
想像力の貧しい奴がこのスレに多いような気がする

529 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:36:03 ]
末尾が「気がする」で終わってるレスは
全部気のせいのような気がする

530 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 15:08:49 ]
なんという自己言及レス

531 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 15:12:16 ]
関数型らしくて言いじゃないか

532 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 15:41:06 ]
>>531
つ座布団1枚

533 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:50:15 ]
* -> * -> * ってどんなとき使うの?

534 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 22:25:25 ]
アナルトレイン



535 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 07:45:46 ]
  ( ゚д゚)゚д゚)゚д゚)
  /  つ つ  つ
  (_(_  ノ ノ  ノ
  し∪ ∪ ∪

536 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 10:10:53 ]
>>505
> ところで、 データ型とAPIのセット のことをなんて呼べばいいの?

プログラミング言語一般での話なら「抽象データ型」でしょうね。

537 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 11:50:46 ]
>>533
関数(->)とかタプル(,)とか

538 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:24:46 ]
485でおま。
それでなのです。 >ときどきの雑記帖の中の人

539 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:40:13 ]
Arrow は * -> * -> * のクラス
MonadTrans は (* -> *) -> * -> * のクラス

540 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 21:20:37 ]
book.realworldhaskell.org/beta/

これの30章が消えてるんだけど・・・。

541 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:05:29 ]
本買えよ

542 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 23:26:23 ]
30章だけが読みたいんだよ。

ところで、HaskellでPetStoreってあるの?

543 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/21(木) 23:56:58 ]
>>542
横からすみませんが、
Pet Storeをよく知らないのでちょこっと検索したんですが、
これっていったい何が面白いんですか?

544 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 00:08:29 ]
>>543
面白くは無いんだけど、色んな言語やフレームワークで同じもの作る
ことで比較をするためのものでしょ。同じアプリがこんな感じで作れ
ちゃうぞ、という。




545 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:40:45 ]
Haskellでウェブアプリというとふつう本か

546 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/22(金) 12:37:40 ]
最近では新しい言語はWEBアプリが書きやすくないと人が入ってこないらしく、
ライトウェイト言語がブームみたいだね。
HaskellはライトウェイトではないからWEBアプリ向きとは全然思えないんだけど、
RubyでRubyOnRailsが考えられたみたいにHaskell独自のWEB向きキラーアプリが
出てこないとHaskellの人気はこれからもずっと平行線だと思うよ。

547 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 12:41:19 ]
>>546
WEBアプリが書きやすいっていうより、APIとかWEBコンテナが標準装備されてないとダメという感じがする。
Javaの功罪は大きい。

548 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 12:41:59 ]
まだ横ばいならたいしたもんだ

549 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 12:48:26 ]
>HaskellはライトウェイトではないからWEBアプリ向きとは全然思えないんだけど、
ライトウェイトって何?動的に型を付ければライトウェイト?
それとwebとどういう関係があるの?

550 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 13:05:36 ]
あまり考えずに気の向くままに書いてもあっさり動くのが
ライトウェイトってことじゃないか?
web案件は短期だったりアジャイルだったりでライトウェイトに
開発できるのが求められてるってのはある

551 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 13:10:45 ]
WEBアプリの開発者は、JavaかRubyのHowto本から入ってる。
だから、WEBアプリ開発者は、身体のどこかに、プログラミング言語のJavaかRubyに似てない部分に拒否反応を持ってる。

552 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 13:11:10 ]
ここでHaskellは人間の思考過程に最も近いから
考えが即座にコードにうつせるため開発期間が最短であると主張する人がどこからか登場
                    ↓

553 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 13:23:23 ]
                    |
                ( ゚д゚ )↓
                 (⊃⌒*⌒⊂)
                  /__ノ''''ヽ__)

554 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 13:27:58 ]
>>550
それならHaskellもライトウェイトで良くね?



555 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:05:36 ]
明示的なコンパイル作業が必要ないってのはLLの必要条件な気がする。

556 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:18:04 ]
LLとかWebアプリとか、
だから普及しないとか、
どうでもよくねえ?
好きな事、楽しい事すればいい。

557 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:22:47 ]
>>555
runghcがあるじゃないか
もうちょっと速ければと思うことはあるけど

558 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:34:05 ]
>>556
そういう立場も理解できるけど、俺は普及してほしい
ライブラリのメンテとか人が足りてないじゃん

559 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:46:33 ]
>>552
Prologには負けるんじゃない。

560 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/22(金) 14:47:15 ]
runghcはオーバーヘッドもかなり大きいみたいだね。

$ cat hello.hs
main = putStrLn "hello"
$ time runghc6 hello.hs
hello

real 0m0.835s
user 0m0.780s
sys 0m0.052s

$ cat hello.rb
print "hello\n"

$ time ruby hello.rb
hello

real 0m0.015s
user 0m0.012s
sys 0m0.000s

561 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/22(金) 14:48:14 ]
$ cat hello.pl
print "hello\n"

$ time perl hello.pl
hello

real 0m0.007s
user 0m0.004s
sys 0m0.000s

$ cat hello.py
print "hello"

$ time python hello.py
hello

real 0m0.035s
user 0m0.020s
sys 0m0.016s


562 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:03:43 ]
LLでHaskell関係のプレゼンとかしてる人いるみたいだけど?

563 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:07:56 ]
WebアプリとLL(と呼ばれている言語)との間には全く関係はないけど、
Webアプリのかなり大部分は一般的にLLと呼ばれている言語で書かれているだろう。
そういう"LL"はテキスト処理がしやすいからってのがあるだろうな。
まあHaskellがそういう意味で人気にならなくても別にどうでもいいけど。

ここでmondic Parser Combinatorを持つHaskellが
最もテキスト処理に適した言語であると主張する人がどこからか登場。
                    ↓

564 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:38:43 ]
HaskellもLL言語だよ



565 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:45:06 ]
これどうなの?
ttp://happs.org/

566 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 16:09:31 ]
Parser Combinatorがあるからテキスト処理ならHaskell最強だろ。







満足した?

567 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 17:42:48 ]
haskellは型推論がちゃんと効いてる使い方が出来れば、LL的な生産性は確保できるだろう。
だがな、至高の存在で良いじゃないか。

haskellの性質上webプログラミングは不得意分野に思うんだが、mod haskellなんて生まれる
分けでもないし生まれたところで破壊的操作がほとんどできないし、ファイル操作は基本的に
苦手でしょ。webは動的言語の親玉が一番向いてるけどs式アレルギーな人が多いからLLに
なってるんでしょうね。

だから、無理にwebに擦り寄らずとも良いと思うんだけどね。むしろ、破壊的操作より安全性を
大切にされる金融などのところで目立つ存在になってくれたらいいんじゃないか?


568 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/22(金) 18:09:07 ]
>>567
もし金融などで使われることを想定するなら、
haskellの並列処理に関する部分も早く実装してほしいところですね。
(まだ未完成)

569 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 18:44:00 ]
某氏のhapps解説はお流れ?

>>567
> 破壊的操作がほとんどできない
なんで?

570 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 18:58:34 ]
なんでそんなにHaskellの応用分野を限定したがるんだw

>>567
コンパイルするならmod_haskellがあっても恩恵は小さいだろ
>破壊的操作がほとんどできないし
Haskellで入出力書いたことあるか?
>ファイル操作は基本的に苦手
これも良く分からん
flock使うのにわざわざライブラリを落としてこないといけないとか、そういうこと?

571 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 19:43:28 ]
ウイルス対策ソフトのように危機感を煽るのはいいが、
既存のシステムを補強するのではなく全部作り直せというのは、ちょっとね

572 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 19:54:17 ]
>>570
Prologを事務処理に使うと、住所や氏名情報などで爆発的にアトムが
発生し、Heap領域を埋め尽くして、GCが頻発するという事態となる。
もちろん数百万レコードを越える処理単位の話だが。
Haskellの場合この問題は起きないの?

573 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 20:37:03 ]
Webアプリが苦手ってことは無いと思うんだけどな。今後Webベースのアプリは
まだ増殖するだろうから、そっちで使いやすいフレームワークやDSLが出ないと
使う人は頭打ちだと俺も思う。

研究者の論文レベルのものも面白いだろうけど、上から下までHaskellベースで
かかれたWebアプリとかで目立つものが出てほしいよ、個人的には。

574 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 20:53:32 ]
>>572
アトムの爆発ってのはPrologスレで言及されてる現象のことでいい?
そもそもPrologのアトムってのが良く分からんので何が問題なのか理解できん
Lispのシンボルみたいな物と思っていいのかな
それなら相当するものはHaskellにはないよ



575 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:35:41 ]
>>574
Lispのシンボルみたいな物、ですね。
記号をどう処理しているのですか。

576 名前:デフォルトの名無しさん [2008/08/22(金) 21:53:05 ]
>>540
30章ってなんの章だったの?

577 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:12:26 ]
>>575
「記号」と言われてもいまいちピンと来ないんだが、何にせよ、
普通の手続き型言語が「記号」を処理するのと大差ない方法で処理してると思う

取り得る種類がコンパイル時に決まっているなら列挙型
そうでないなら整数とか文字列
文字列の比較のコストが問題になるなら自分でシンボルテーブルのようなものを用意する、とか

578 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:34:03 ]
>>576
>>310-314

579 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:45:26 ]
>>572
Prologでも、
1レコード512バイトをsub_atomで30項目に分解したり、更にsplitの
処理をしたりすると確かにアトムが大量発生するだろうが、
Stringとして読み込んで、終始String処理に徹すれば、アルファベットの
数、つまり高々数万のアトムで済むんじゃないの?
Stringすなわちリスト処理になると遅いから嫌なのかな。


580 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:00:27 ]
宣言的言語をリアルタイム処理に使いたくない病にかかってる。
資源が十分にあると理屈では分かっていても、終わったら電源切っても大丈夫な処理じゃないと拒否反応がでる。

581 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:09:14 ]
>>579
処理速度もあるかも知れませんが、アトムだと、
foo([株式会社|R],R).
と書けるところが、Stringだと
foo(List,R) :- append("株式会社",R,List).
と書かなくてはならないということがあります。
appendを高速化する機構が欲しくなりますね。


582 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:35:10 ]
それって代数的データ型を使ってこんな感じで良いんじゃない?

data Atom = Kabushiki | Dummy deriving (Show, Eq)

foo :: [Atom] -> [Atom]
foo (Kabushiki : r) = r


583 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:43:27 ]
Prologでまったり Part3
pc11.2ch.net/test/read.cgi/tech/1193354806/

584 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 12:43:04 ]
>>581
この話おかしいよ。
foo([株式会社|R],R). の方は、
すでに株式会社というアトムが切り出されていて、リストの構成要素になっている。
一方、
foo(List,R) :- append("株式会社",R,List). のListはString。ここは、
foo(["株式会社"|R],R).
でなきゃ、フェアじゃない。




585 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 13:58:45 ]
>>572
> Prologを事務処理に使うと、住所や氏名情報などで爆発的にアトムが発生し

第五世代コンピュータプロジェクトの成果を是非参照下さい。

586 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/23(土) 14:16:16 ]
>>585
よく知らないけどソフトウェア科学会会誌7月号に第五の話題が載っていたよ

587 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:21:10 ]
成果って、「prologって役立たずじゃん」という結論を得たこと?

588 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/23(土) 14:28:53 ]
>>587
それは短絡的な人たちの根拠のないうわさ。
第五は基礎研究なので企業の人たちが求めるような成果が出ないのは当たり前のこと。

589 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:31:33 ]
Prologの話は他でやってくれ
んで問題点を整理してまたいらっしゃい

590 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/23(土) 14:33:31 ]
詳しいことは忘れたけど、
述語論理による仕様記述を使った鉄道のプロジェクトが企業側で行われた例があったような。
なんだったっけ?

591 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:45:22 ]
Prologはどうでもいいのだが、Haskellで金融(とくに保険業)のアブリを
開発する場合、何か問題になる点はないのか。

592 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:54:20 ]
>>591
必要なメモリサイズを予測しにくい点とか。full lazyな処理系全般に言えると思うけど。

593 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:57:02 ]
金融系システムにHaskellを使うメリット自体が思いうかばん。
いいじゃん、Javaでつくるのが流行ならJavaで作らせれば。
どうせ枯れたシステムなんだから。

594 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 15:00:18 ]
>>592
full lazyな処理系って、よくわからない。



595 名前:36 ◆K0BqlCB3.k mailto:sage [2008/08/23(土) 15:11:43 ]
どんな言語で書いたとしても、必要なメモリの量は実際に動かしてみないとわからないよ。

596 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 15:17:46 ]
haskellっていいプロファイラあんの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<225KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef