関数型プログラミング言語Haskell Part4
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/02/24(金) 03:02:55http://www.haskell.org/
日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.geocities.jp/shido_takafumi/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 http://pc.2ch.net/tech/kako/996/996131288.html
Part2 http://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 http://pc8.2ch.net/test/read.cgi/tech/1076418993/
関連スレは>>2
関連書籍は>>3
0002デフォルトの名無しさん
2006/02/24(金) 03:03:28・関数型言語Part IV
http://pc8.2ch.net/test/read.cgi/tech/1083649982/
・【数学者】Haskellはクソ言語【オナニー】
http://pc8.2ch.net/test/read.cgi/tech/1128011645/
・純粋関数型言語Concurent Clean
http://pc8.2ch.net/test/read.cgi/tech/1075629340/
・関数型言語ML(SML, OCaml, etc.), Part 4
http://pc8.2ch.net/test/read.cgi/tech/1133003340/
・Common Lisp, Scheme Part 14
http://pc8.2ch.net/test/read.cgi/tech/1132275726/
・【入門】CommonLispその2【質問よろず】
http://pc8.2ch.net/test/read.cgi/tech/1140012484/
・Emacs Lisp 2
http://pc8.2ch.net/test/read.cgi/tech/1068467385/
・ F#相談室
http://pc8.2ch.net/test/read.cgi/tech/1054523453/
0003デフォルトの名無しさん
2006/02/24(金) 03:04:19・Introduction to Functional Programming Using Haskell
http://www.amazon.co.jp/exec/obidos/ASIN/0134843460/
・Haskell: The Craft of Functional Programming
http://www.amazon.co.jp/exec/obidos/ASIN/0201342758/
・The Fun of Programming
http://www.amazon.co.jp/exec/obidos/ASIN/1403907722/
・The Haskell School of Expression: Learning Functional Programming Through Multimedia
http://www.amazon.co.jp/exec/obidos/ASIN/0521644089/
・入門Haskell (2006年3月発売予定)
http://item.rakuten.co.jp/book/1794880/
・ふつうのHaskellプログラミング (2006年5月発売予定)
http://i.loveruby.net/d/20051129.html
0004デフォルトの名無しさん
2006/02/24(金) 07:43:180006デフォルトの名無しさん
2006/02/24(金) 10:03:35,' / ,' {l. ! {/ ,イ / }| !|', !. ', ', ゙,
ハ〃 ! !| | | ∠/ ,:'-ノ} /リ l ,ム. ! } |!
ハヽ、ゝ!| l | ,:',;='ィ'、'´ ,'.ノ ノ.,;lノ=、l .,' ,' ,' ノ
{ l l ', |'ヲi(_ノ.} ´ i(ノ.}゙!ノ,:',:''´
', h. ', ',゙、 ':゙゙_.ノ. ':゙_ノ〃ン
':, { ',', ':,':, 丶 ,' l .}
ヾ ':,':, ':ヾ、._ 「´/ ,' | .,' 新スレおめでとうございます!!
`ヾ-、`ヽ_ `´ _,.ィリ.ノ ,'
リ';',ヾ| ` ‐┬ ´ _ノノ,'/
ヾ,、-- 、 _ | ´ノ'
f ヾ、..___ ヽ、 ー‐''
0007デフォルトの名無しさん
2006/02/24(金) 10:05:16/ ̄ ̄ ̄ ̄\,, /−、 −、 \
/_____ ヽ / | ・|・ | 、 \
| ─ 、 ─ 、 ヽ | | / / `-●−′ \ ヽ
| ・|・ |─ |___/ |/ ── | ── ヽ |
|` - c`─ ′ 6 l |. ── | ── | |
. ヽ (____ ,-′ | ── | ── | l
ヽ ___ /ヽ ヽ (__|____ / /
/ |/\/ l ^ヽ \ / /
| | | | l━━(t)━━━━┥
0008デフォルトの名無しさん
2006/02/24(金) 12:40:46メンヘラのボクにも分かるように説明してください
0009デフォルトの名無しさん
2006/02/24(金) 14:13:02シグマ計画
第5世代コンピュータ!
0010デフォルトの名無しさん
2006/02/24(金) 14:40:03ここってHaskell板じゃ...
Prologはまだ生きてるよ。
0011デフォルトの名無しさん
2006/02/24(金) 15:39:470012デフォルトの名無しさん
2006/02/25(土) 00:10:070013デフォルトの名無しさん
2006/02/25(土) 09:29:28コンパイルはできるんですが,サンプル読み込もうとすると
エラー吐いて死ます.
Gtk2Hsかhs-pluginsのインストールに失敗してるのかなー?
0014デフォルトの名無しさん
2006/02/25(土) 10:02:16hs-plugins のインストールに失敗して、 ghci -package plugins なだけで
panic になったことはあるけど、それならコンパイルにも失敗するし違うかな。
0015デフォルトの名無しさん
2006/02/25(土) 11:09:41どうもです.エラーメッセージは以下のような感じです.
pivotal: /.../PIVOTAL025/Pic.o: unknown symbol `GraphicsziUIziGtkziGdkziPixbufData_zdfMArrayPixbufData_closure'
pivotal: user error (resolveObjs failed with <<False>>)
どうやら (System.Eval.Haskellの) evalのところでコケてるようなので
hs-plugin の問題かなとも思ったんですが
0016デフォルトの名無しさん
2006/02/25(土) 15:00:41ないんではないでしょうか。
シンボルの名前的には hsGtk のインストールを疑った方が良いのでは。
0017デフォルトの名無しさん
2006/02/25(土) 20:10:32何とかしてください。
0018デフォルトの名無しさん
2006/02/25(土) 20:20:140019デフォルトの名無しさん
2006/02/26(日) 02:45:52stripしてupxするとだいぶ減る
0020デフォルトの名無しさん
2006/02/26(日) 10:51:350021デフォルトの名無しさん
2006/02/26(日) 11:53:08だから、精嚢の内容物がだいぶ減るんだって
0022デフォルトの名無しさん
2006/03/01(水) 11:53:45ハスケルって
0023デフォルトの名無しさん
2006/03/01(水) 21:25:17haskell セキュア> lisp.
haskell 速い> lisp.
haskell デブ> lisp.
0024デフォルトの名無しさん
2006/03/02(木) 03:11:31>haskell 速い> lisp.
>haskell デブ> lisp.
マジレスすると、ここら辺は処理系/処理内容依存じゃないの。
0025デフォルトの名無しさん
2006/03/03(金) 07:00:26和書で
0026デフォルトの名無しさん
2006/03/03(金) 09:56:120027デフォルトの名無しさん
2006/03/03(金) 10:05:480028デフォルトの名無しさん
2006/03/03(金) 11:57:43わざわざ金出して本買う必要も無いような…。
0029デフォルトの名無しさん
2006/03/03(金) 12:44:13く書けているドキュメントに見えるんだけどねぇ。
まあ、これから出る本があれに比べてやさしい保証はどこにもないわけだが。
0030デフォルトの名無しさん
2006/03/03(金) 12:50:150031デフォルトの名無しさん
2006/03/03(金) 19:11:170032デフォルトの名無しさん
2006/03/04(土) 00:12:37売り切れてもうた!!
0033デフォルトの名無しさん
2006/03/04(土) 00:49:480034デフォルトの名無しさん
2006/03/04(土) 21:32:27表紙キタヨ!!
0035デフォルトの名無しさん
2006/03/04(土) 22:14:53>この体験は、その後のよりよいプログラマー人生での手助けとなるはずです。
ESR かよ。
0036デフォルトの名無しさん
2006/03/04(土) 23:14:22なんだこの表紙はw
0037デフォルトの名無しさん
2006/03/04(土) 23:20:27でmonadiusが紹介されていますな。
0038デフォルトの名無しさん
2006/03/04(土) 23:20:370039デフォルトの名無しさん
2006/03/04(土) 23:27:480040デフォルトの名無しさん
2006/03/04(土) 23:49:03くやしい!!キーーッ!><。
0041デフォルトの名無しさん
2006/03/05(日) 00:45:430042デフォルトの名無しさん
2006/03/05(日) 01:10:49CのglBegin()やglEnd()に相当する式がわかりません。
ハスケル階層ライブラリとにらめっこして色々試してみましたが、
さっぱりです。誰か偉い人、教えて下さい。
あとHOpenGLと(Cの)OpenGLの関数の対応表(?)みたいなのがあれば
ぜひ教えて下さい。お願いします。
0043デフォルトの名無しさん
2006/03/05(日) 01:21:09とりあえずチュートリアルは読みました?
0044デフォルトの名無しさん
2006/03/05(日) 01:23:39フットワーク軽いのは凄いと思うが、1年後に期待なヤツだよなあ。
0045デフォルトの名無しさん
2006/03/05(日) 01:43:14フヒヒヒヒ! すいません!
読んでから出直してきます。英語の奴ですよね?
0046デフォルトの名無しさん
2006/03/05(日) 16:54:470047デフォルトの名無しさん
2006/03/06(月) 03:37:300048デフォルトの名無しさん
2006/03/06(月) 08:58:56レイジーたんがたらい回してる本なら買ってもいい
0049デフォルトの名無しさん
2006/03/06(月) 09:03:47ワロタ
なんか言えよw
0050デフォルトの名無しさん
2006/03/06(月) 09:08:01何も言わないのがネタ。詳しくは
http://hendora.com/dora_sp/siradora/siradora.htm
0051デフォルトの名無しさん
2006/03/06(月) 23:02:070052デフォルトの名無しさん
2006/03/06(月) 23:05:020053デフォルトの名無しさん
2006/03/07(火) 12:30:58ttp://www.cbook24.com/bm_detail.asp?sku=4839919623
青木さんのは5月末らしい
ttp://i.loveruby.net/d/20060305.html#p03
0054デフォルトの名無しさん
2006/03/08(水) 00:38:340055デフォルトの名無しさん
2006/03/08(水) 11:45:01レビューに参加すればわかるんでね?
0056デフォルトの名無しさん
2006/03/09(木) 16:22:330057デフォルトの名無しさん
2006/03/10(金) 00:27:26HaSL: SL(1) in Haskell
0058デフォルトの名無しさん
2006/03/10(金) 04:52:360059デフォルトの名無しさん
2006/03/10(金) 14:39:54do i <- j
(k i l)
をdo無しで表現するにはどうすればいいのでしょうか?
0060デフォルトの名無しさん
2006/03/10(金) 14:53:190061デフォルトの名無しさん
2006/03/10(金) 14:58:19[解決]
0062デフォルトの名無しさん
2006/03/11(土) 01:09:20そんな気がする…
0063デフォルトの名無しさん
2006/03/11(土) 01:45:11そのうち一つでもすごいぜ
0064デフォルトの名無しさん
2006/03/11(土) 03:55:04ieは標準搭載しろ。
0065デフォルトの名無しさん
2006/03/11(土) 05:15:560066デフォルトの名無しさん
2006/03/11(土) 08:28:230067デフォルトの名無しさん
2006/03/11(土) 09:59:560068デフォルトの名無しさん
2006/03/11(土) 11:54:58C++をマスターした時点でHaskellとSchemeとアセンブラとJavaをマスターしたも同然。
それだけC++のマスターは難しいってことだ。
0069デフォルトの名無しさん
2006/03/11(土) 14:02:21お前、HaskellとScheme知らないだろ?
0070デフォルトの名無しさん
2006/03/11(土) 14:09:01C++のマスターが難しいだって(藁
ものを知らんというのは面白いな。
0071デフォルトの名無しさん
2006/03/11(土) 14:10:15問題は前半だ。
0072デフォルトの名無しさん
2006/03/11(土) 14:13:47コンパイルエラーは。
0073デフォルトの名無しさん
2006/03/11(土) 14:22:04ゆとり教育の反動なのか義務教育でHaskellとはずいぶん難しいことやってるな。
0074デフォルトの名無しさん
2006/03/11(土) 14:46:330075デフォルトの名無しさん
2006/03/11(土) 15:28:35理屈だけ覚えて実践は他の言語で。
0076デフォルトの名無しさん
2006/03/11(土) 15:43:12何かのグランプリだろ?
0078デフォルトの名無しさん
2006/03/11(土) 20:09:06もともとC/C++は関数プログラミング言語なんだが。
0079デフォルトの名無しさん
2006/03/11(土) 20:13:06C++をマスターしたらHaskellもマスターしたようなもの、ってのは言い過ぎだろ。
0080デフォルトの名無しさん
2006/03/11(土) 20:26:120081デフォルトの名無しさん
2006/03/11(土) 20:29:23>もともとC/C++は関数プログラミング言語なんだが。
>もともとC/C++は関数プログラミング言語なんだが。
こんな事が後何年続くのでしょう...
0082デフォルトの名無しさん
2006/03/11(土) 20:41:280083デフォルトの名無しさん
2006/03/11(土) 21:03:29お前、HaskellとScheme知らないだろ?
知らないなら黙ってろよ。
0084デフォルトの名無しさん
2006/03/11(土) 21:08:51お前、C++知らないだろ?
知らないなら黙ってろよ。
0085デフォルトの名無しさん
2006/03/11(土) 21:09:23boostのlambdaをみたときは、こんな小細工してラムダを
使いたいなら素直に関数型言語使えよと、アホかと思った。
0086デフォルトの名無しさん
2006/03/11(土) 21:10:520087デフォルトの名無しさん
2006/03/11(土) 21:13:25むしろ、知らないのは77=78のようだがw
0088デフォルトの名無しさん
2006/03/11(土) 21:14:39C++をマスターしてなおかつboostをマスターしないとダメってことだ。
0089デフォルトの名無しさん
2006/03/11(土) 21:16:390090デフォルトの名無しさん
2006/03/11(土) 21:16:43到底Haskellはマスターしたことにならんだろw
0091デフォルトの名無しさん
2006/03/11(土) 21:22:55というかいい加減C++なんか捨てたらどうだとオモタヨ
0092デフォルトの名無しさん
2006/03/11(土) 21:24:32本人にその自覚がないからさらにやっかいだよな。
009377
2006/03/11(土) 21:25:03リファレンスひいたりしなくていいわけだ。
>>83
お前、日本語知らないだろ?
知らないなら黙ってろよ。
0094デフォルトの名無しさん
2006/03/11(土) 21:30:22ライブラリの使い方だけを解ればいいとしたら、凄く幸せなことだよな。
リファレンスをひくだけでいいわけだ。
C++ユーザって言語仕様やライブラリの使い方を理解して悦にいっている
人覆いね。
(C++ユーザ)∧¬(関数型言語ユーザ)のうち、ラムダ計算を理解している
人って何%ぐらいなんだろう。
0095デフォルトの名無しさん
2006/03/11(土) 21:30:31ああいう小細工をして頑張ってるわけです。
0096デフォルトの名無しさん
2006/03/11(土) 21:31:12009777
2006/03/11(土) 21:40:57いや……俺はC++知らないよ。というか煽ってわるかった。ごめん。
ただ「C++でもそういうことが出来るらしい」ということは知っているけれど。
最近 Haskell をやりだしたんだが、コード書く時間1に対して
リファレンスひいてる時間が10ぐらいあるからそう表現したんだ。
0098デフォルトの名無しさん
2006/03/11(土) 21:52:230099デフォルトの名無しさん
2006/03/11(土) 22:29:36含まないだろ。
さすがに他のライブラリまで含めだしたらきりかない。
0100デフォルトの名無しさん
2006/03/11(土) 22:36:14Boost は次期標準なので、最近はここまで含めるのが普通。
また、Boost 自体の使い方はともかくBoost で使われてるような手法は
C++ の範囲だから、マスターというからにはそれらが使えることは要求したい。
0101デフォルトの名無しさん
2006/03/11(土) 22:57:30まあ、今までなら1つも採用されてないけどなw
0102デフォルトの名無しさん
2006/03/11(土) 22:59:200103デフォルトの名無しさん
2006/03/11(土) 23:05:490104デフォルトの名無しさん
2006/03/11(土) 23:09:34JavaScriptって聞いた話によると「Cの皮をかぶったLisp」らしいから、
Haskellユーザーは好きな人多いんじゃないかな。
Haskell好きはLispも好きな人が多いから。
0105デフォルトの名無しさん
2006/03/11(土) 23:10:15組み込まれている(組み込まれてないのはETとか)いてそれの応用
なので、ライブラリの使い方の話ではなく、ジェネリックプログラミング
の技法という意味ではboostを含めても含めなくてもそんなに
この話題については差がない。
どちらにしても、C++ユーザが関数型言語の深い知識があるとは
思えないけど。関数型言語の一部の表層だけでしょ。
STLを設計したアレックス・ステファノブは解っているかもしれないけど。
0106デフォルトの名無しさん
2006/03/11(土) 23:14:58モナドがわかってるというのならともかく。
0107デフォルトの名無しさん
2006/03/11(土) 23:16:06>思えないけど。関数型言語の一部の表層だけでしょ。
C++ユーザを一くくりにしてもしょうがないかと思われ。
俺がHaskellを勉強したきっかけもC++だし。
0108デフォルトの名無しさん
2006/03/11(土) 23:17:31そこはC++以外の知識は全く皆無のユーザーのことだろう。
0109デフォルトの名無しさん
2006/03/11(土) 23:17:50動的さとか、なんでも型変換できるとことか。
0110105
2006/03/11(土) 23:18:340111デフォルトの名無しさん
2006/03/11(土) 23:22:15スレちがいだな。スマソ
0112デフォルトの名無しさん
2006/03/11(土) 23:24:12同じこと書こうとしてた。
C++ ってマルチパラダイムな言語だし、最近は Haskell の影響を強く受けてるから
きっちり理解するためには Haskell の知識は必須なんだよね。
0113デフォルトの名無しさん
2006/03/11(土) 23:31:19それは、「C++以外の知識」ではなく、「C++の知識」に含まれる。
0114デフォルトの名無しさん
2006/03/11(土) 23:32:12そのHaskellの知識って何のことか知らんけど、lambdaとかなら
Haskellをマスターしたことにはならんよ。
0115105
2006/03/11(土) 23:34:07「Haskellの知識はC++の知識の部分集合」
か
「Haskellの知識の一部はC++の知識の部分集合」
かどっち?前者なら賛同しかねるが。
0116デフォルトの名無しさん
2006/03/11(土) 23:35:16その部分は型推論なんかと似たところがありそうだけどね。
それに、関数型と言われることもあるという点では共通してるように、
関数型みたいな考え方に関する部分は似てるんじゃないかな。
0117デフォルトの名無しさん
2006/03/11(土) 23:35:20その小細工はまだまだ続くようだね
ttp://spirit.sourceforge.net/dl_more/phoenix_v2/libs/spirit/phoenix/doc/html/
0118デフォルトの名無しさん
2006/03/11(土) 23:37:08前者の意味で言ってる人は皆無だろう。
まあ、前者を主張すべきところで後者の主張をしてしまってる間違った人は
いるかも知れんが。
0119デフォルトの名無しさん
2006/03/11(土) 23:37:270120デフォルトの名無しさん
2006/03/11(土) 23:39:100122デフォルトの名無しさん
2006/03/11(土) 23:42:58型推論とかも知らないだろうし。この辺はすぐわかるだろうけどね。
0123デフォルトの名無しさん
2006/03/11(土) 23:46:230124デフォルトの名無しさん
2006/03/11(土) 23:47:47最近の C++ の論文には、再帰型や型推論の話は出てきてます。
0125デフォルトの名無しさん
2006/03/11(土) 23:48:210126デフォルトの名無しさん
2006/03/11(土) 23:51:33というので実現できるな。boostのvariantはunionに近い。
0127デフォルトの名無しさん
2006/03/11(土) 23:59:20俺もspirit使ってパーサ書いたことある。
まぁ便利ではあるんだけど、Parsecと比べると面倒なことも多い。
記述量が多かったりするあたりや、ちょっと間違ったときのエラーメッセージの大洪水とか。
0128デフォルトの名無しさん
2006/03/12(日) 00:00:17他の手堅い方法に比べてどうですか
0129デフォルトの名無しさん
2006/03/12(日) 00:01:010130デフォルトの名無しさん
2006/03/12(日) 00:01:240131デフォルトの名無しさん
2006/03/12(日) 00:19:03「なんでmainに代入してるんだ!」とか言い出すのがオチ。
0132デフォルトの名無しさん
2006/03/12(日) 00:27:12unsigned char main[] = { 0x82,0x10,0x20,0x04, ...
なんてコードもあるので,普通のユーザですらそんなことは言わない.
0133デフォルトの名無しさん
2006/03/12(日) 00:40:000134デフォルトの名無しさん
2006/03/12(日) 00:51:35>>132 は 『 「なんでmainに代入してるんだ!」とか言い出すのがオチ 』 に対する
反論なので,>>131 にどんな高尚な意味があろうとも関係ない.
0135デフォルトの名無しさん
2006/03/12(日) 02:31:37C++プログラマは131を見ても、131がHello worldプログラムの全体で、
mainがmain関数にあたるということすらわからないみたいw
0136デフォルトの名無しさん
2006/03/12(日) 07:03:070137デフォルトの名無しさん
2006/03/12(日) 07:58:060138デフォルトの名無しさん
2006/03/12(日) 11:22:07boost::numeric::ublas::matrixでようやく遅延評価が出てくるのかよw
013968
2006/03/13(月) 08:41:45C++の強力なテンプレート機能を念頭においての発言だったが、
>>79の言う通り確かに言いすぎだったな。
>>99
boost/lokiに代表される変態ライブラリは、C++の言語仕様外のことをしているわけではない。
boostの変態さはすべてC++が持つ変態さである。
あと俺が言うマスターってのは「言語仕様を理解し使いこなせる」くらいの意味な。
C++においてそれがどれだけ難しいかと言ったら……
0140デフォルトの名無しさん
2006/03/13(月) 09:19:26その論法で行けば機械語最強だな(w
0141デフォルトの名無しさん
2006/03/13(月) 12:15:30ライブラリを全部マスターするのはそりゃ難しいだろ
それこそモナドや継続を実現するためのライブラリだって作れるだろうがw
0142デフォルトの名無しさん
2006/03/13(月) 16:01:54いくらboostをマスターしたと言ってもHaskellで思考できるとは限らない。boostにHaskellと同じような機能があったとしても。
ここでboostの話を出すのはもう勘弁して欲しい。
0143デフォルトの名無しさん
2006/03/13(月) 18:04:58簡潔に二行で
0144デフォルトの名無しさん
2006/03/13(月) 18:08:31http://www.boost.org/
0145デフォルトの名無しさん
2006/03/13(月) 18:25:290146デフォルトの名無しさん
2006/03/14(火) 00:10:09Haskellにevalみたいに動的に式を評価できるような仕組みってありますか?
0147デフォルトの名無しさん
2006/03/14(火) 00:27:590148デフォルトの名無しさん
2006/03/14(火) 00:34:17ありがとうございました.
0149http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 20:48:10もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0150デフォルトの名無しさん
2006/03/18(土) 21:06:300151デフォルトの名無しさん
2006/03/18(土) 22:00:36初カキコ記念として
>About Haskell(A Short Introduction to Haskell)を 永田章人が勝手に翻訳したもの
という
http://web.yl.is.s.u-tokyo.ac.jp/~ganat/memo/aboutHaskell.html
の
>表計算ソフトを使ったことがある人は
>関数型プログラミングを 経験済みだと言えるでしょう
という一文に、関数とExcelねと、妙に納得したことを発表してみる・・・
0152デフォルトの名無しさん
2006/03/22(水) 04:39:420153デフォルトの名無しさん
2006/03/22(水) 09:50:520154デフォルトの名無しさん
2006/03/22(水) 11:45:200155デフォルトの名無しさん
2006/03/22(水) 16:54:490156デフォルトの名無しさん
2006/03/22(水) 17:48:08学ぶ価値はあるかい?時間の無駄?
0157デフォルトの名無しさん
2006/03/22(水) 18:33:02現時点で
0158デフォルトの名無しさん
2006/03/22(水) 22:42:07知的好奇心から学びたいならオススメ。
ある意味最強だ。
就職やキャリアアップとか仕事方面の足しにしたいなら
他にもやる事いっぱいあるだろう。
発想が広がるから時間の無駄とまでは言わないけれど。
0159デフォルトの名無しさん
2006/03/22(水) 23:18:320160デフォルトの名無しさん
2006/03/22(水) 23:36:040161デフォルトの名無しさん
2006/03/23(木) 04:40:060162デフォルトの名無しさん
2006/03/23(木) 04:55:090163デフォルトの名無しさん
2006/03/23(木) 04:57:370164デフォルトの名無しさん
2006/03/23(木) 13:27:5310年?
0165デフォルトの名無しさん
2006/03/24(金) 07:43:32http://book.mycom.co.jp/user/preview/4-8399-1962-3/index.shtml
0166デフォルトの名無しさん
2006/03/24(金) 12:47:520167デフォルトの名無しさん
2006/03/24(金) 14:38:13日本語の本が出ただけでもいいじゃん
0168デフォルトの名無しさん
2006/03/24(金) 15:33:04こっちの情報はないか
0169デフォルトの名無しさん
2006/03/25(土) 00:28:41http://www.amazon.co.jp/exec/obidos/ASIN/4839919623/
0170デフォルトの名無しさん
2006/03/26(日) 02:08:520171デフォルトの名無しさん
2006/03/26(日) 02:15:11こなれた解説書(WEB含)が出てからかな・・
>>1のサイトも学術的には立派だけど、ちょっと敷居が高い
なんで、今度出る新刊に期待
0172デフォルトの名無しさん
2006/03/26(日) 07:47:560173デフォルトの名無しさん
2006/03/26(日) 12:17:21あるよ。
0174デフォルトの名無しさん
2006/03/27(月) 01:21:030175デフォルトの名無しさん
2006/03/27(月) 03:01:49LISP じゃねえ?
#スレ的にはHaskellって云いたいが、コンパイラの枯れ具合を考えた
0176デフォルトの名無しさん
2006/03/27(月) 04:00:26それ Autrijus Tang の文章だよ。
前にも見かけた気がするが、とりあえず次の YAPC の書き出しもコレだな。
http://tokyo.yapcasia.org/sessions/learning_haskell.html
お気にいりのフレーズなんだろうか。
0177デフォルトの名無しさん
2006/03/27(月) 06:00:27速くねーだろ。
あ、実行速度じゃなくて開発速度の事か。
0178デフォルトの名無しさん
2006/03/27(月) 07:26:000179デフォルトの名無しさん
2006/03/27(月) 07:31:03Haskellのチュートリアルなのか、Schemeのなのか紛らわしいな・・・。
0180デフォルトの名無しさん
2006/03/27(月) 10:18:34どの辺が?
0181デフォルトの名無しさん
2006/03/27(月) 10:23:02そのかわり型が充実してて頑強なんだろうけれど。
0182デフォルトの名無しさん
2006/03/27(月) 14:44:49遅いけど。
0183デフォルトの名無しさん
2006/03/27(月) 16:20:020184デフォルトの名無しさん
2006/03/27(月) 16:59:020185デフォルトの名無しさん
2006/03/27(月) 17:05:17プログラムからプログラムを操作できること
0186デフォルトの名無しさん
2006/03/27(月) 17:21:08俺も聞きたい
0187デフォルトの名無しさん
2006/03/27(月) 17:30:35恋人のように振る舞うこと
0188デフォルトの名無しさん
2006/03/27(月) 18:18:38つうか、型が充実してるって奴以外全部怪しくね?
しかも、Rubyより柔軟とかC++より速いとか例えあってても
あんまり自慢にならないし。
0189デフォルトの名無しさん
2006/03/27(月) 19:29:560190デフォルトの名無しさん
2006/03/27(月) 20:15:190191デフォルトの名無しさん
2006/03/27(月) 20:21:150192デフォルトの名無しさん
2006/03/28(火) 17:26:380193デフォルトの名無しさん
2006/03/28(火) 19:02:30http://www.amazon.co.jp/exec/obidos/ASIN/0333992857/
この本だれか読んだ?感想教えて。
0194デフォルトの名無しさん
2006/03/28(火) 19:02:57へー。Haskellには変数や型がないのか。
関数も演算子もないんだな。
変わった言語なんだなHaskellって。
0195デフォルトの名無しさん
2006/03/28(火) 21:12:10演算子も関数
0196デフォルトの名無しさん
2006/03/28(火) 22:10:25つまらん応酬はよそでやれ。
0197デフォルトの名無しさん
2006/03/28(火) 22:20:13Arrowの章はダウソできるよ。
ttp://www.soi.city.ac.uk/~ross/papers/fop.html
0198デフォルトの名無しさん
2006/03/28(火) 23:11:40関数がある時点でPHPと共通点があるな。
0199デフォルトの名無しさん
2006/03/28(火) 23:23:44PHPは人が作りし言語
同じ土俵で語ること自体が不自然
0200デフォルトの名無しさん
2006/03/28(火) 23:57:39へー、PHPって関数あるんだ
0201デフォルトの名無しさん
2006/03/29(水) 00:25:560202デフォルトの名無しさん
2006/03/29(水) 01:03:440203デフォルトの名無しさん
2006/03/29(水) 01:13:210204デフォルトの名無しさん
2006/03/29(水) 01:13:590205デフォルトの名無しさん
2006/03/29(水) 01:31:520206デフォルトの名無しさん
2006/03/29(水) 01:48:540207デフォルトの名無しさん
2006/03/29(水) 08:47:540208デフォルトの名無しさん
2006/03/29(水) 08:57:170209デフォルトの名無しさん
2006/03/29(水) 11:00:110210デフォルトの名無しさん
2006/03/29(水) 12:53:290211デフォルトの名無しさん
2006/03/29(水) 13:04:370212デフォルトの名無しさん
2006/03/29(水) 18:30:370213デフォルトの名無しさん
2006/03/30(木) 18:17:33Audrey Tang が Perl を使う理由ってなんなんだ?
0214デフォルトの名無しさん
2006/03/30(木) 19:29:030215デフォルトの名無しさん
2006/03/31(金) 22:29:45できは悪くないと思うんだが、
付録にGHCのPrelude.htmlの訳を載せるならサンプルコードも付けて欲しかった。
あと練習問題の答えも。
0216デフォルトの名無しさん
2006/03/32(土) 01:00:33Windows版のGHC 6.4.1ってHGLはまともに動かないよね。
標準添付でWindowsでも動かせるからHGLにしたって書いてるけど、
動作チェックはしてないんだろうな。
0217デフォルトの名無しさん
2006/03/32(土) 01:32:37その感動を誰かに伝えたくて思わずカキコ
0218デフォルトの名無しさん
2006/03/32(土) 01:38:15次のページにはC言語並のソースが
書いてあるんだけどな
0219デフォルトの名無しさん
2006/03/32(土) 09:45:150220デフォルトの名無しさん
2006/03/32(土) 11:18:09勝手に素敵ものにプログラム変換してくれる時代が来るんじゃねーの
0221デフォルトの名無しさん
2006/03/32(土) 11:25:500222デフォルトの名無しさん
2006/03/32(土) 12:17:04俺はHugsと心中する。
0223デフォルトの名無しさん
2006/03/32(土) 12:42:46俺もそう思ってGHC.Handleのパッチを書いてたんだが、なんとなく放置中。
0224デフォルトの名無しさん
2006/03/32(土) 14:14:45おそらく50年後もそんな風に言われてそうなキガス
情報科学の人らは数学じゃなくて経済学を勉強するべきかもね。
0225デフォルトの名無しさん
2006/03/32(土) 21:00:520226デフォルトの名無しさん
2006/03/32(土) 21:03:15基本的な要点は抑えられてると思う。
後半は説明が不親切なところもあったが。
それから、30頁7行目の
>thenとelseは同格なので同じインデントにする必要があります
は間違い。
0227デフォルトの名無しさん
2006/03/32(土) 21:50:19webで簡単に予習してから読むのがちょうどいいかもしれん。
まあそれでも日本語の本が出たことはめでたい。
布教もしやすくなるってもんだ。
0228デフォルトの名無しさん
2006/04/02(日) 00:23:320229デフォルトの名無しさん
2006/04/02(日) 01:44:290230デフォルトの名無しさん
2006/04/02(日) 01:49:070231デフォルトの名無しさん
2006/04/02(日) 04:04:36致命的だな……
0232デフォルトの名無しさん
2006/04/02(日) 08:17:120233デフォルトの名無しさん
2006/04/02(日) 09:49:07なんだそのド素人みたいなミスは
0234デフォルトの名無しさん
2006/04/02(日) 10:05:240235デフォルトの名無しさん
2006/04/02(日) 10:21:14カワイソス
0236デフォルトの名無しさん
2006/04/02(日) 11:04:220237デフォルトの名無しさん
2006/04/02(日) 11:07:39http://book.mycom.co.jp/support/e2/haskell/
0238デフォルトの名無しさん
2006/04/02(日) 12:52:300239Rubyはどうよ
2006/04/02(日) 21:06:32ハッスル
ちょとだけ似たもの同士
Perl6の開発でハスケルってのが使われてるんだよね?
PHPの次はハスケルが来るんか?〜Webプログラミング
…なわけねーか
0240デフォルトの名無しさん
2006/04/03(月) 03:35:51主流にはならないかもね。
馬鹿文系の体力勝負に迎合するものじゃないと
0241デフォルトの名無しさん
2006/04/03(月) 03:41:24洗脳して下さい。
0242デフォルトの名無しさん
2006/04/03(月) 07:06:230243デフォルトの名無しさん
2006/04/03(月) 09:55:49偏差値ってなんですか?
0244デフォルトの名無しさん
2006/04/03(月) 10:09:45ヘドが出ます。
0245デフォルトの名無しさん
2006/04/03(月) 10:34:07これはプログラミング入門者にはまったくもって薦められないですね
0246デフォルトの名無しさん
2006/04/03(月) 10:38:55生産性低かったら何の意味もないし。
0247デフォルトの名無しさん
2006/04/03(月) 10:47:03統計はデータがあってこそ、だよね。
0248デフォルトの名無しさん
2006/04/03(月) 10:52:50統計学をデータ処理の手法としてしか見ていないマスターには程遠い人
0249デフォルトの名無しさん
2006/04/03(月) 11:10:030250デフォルトの名無しさん
2006/04/03(月) 11:36:490251デフォルトの名無しさん
2006/04/03(月) 12:13:39Eclipse3.1でPlugin使おうと思ってインストールしたけど、うまくいかなかった。
0252デフォルトの名無しさん
2006/04/03(月) 13:01:400253デフォルトの名無しさん
2006/04/03(月) 13:53:19秀丸とcmdでがんばります。
0254デフォルトの名無しさん
2006/04/03(月) 14:03:250255デフォルトの名無しさん
2006/04/03(月) 14:16:08マスターってなんですか?
0256デフォルトの名無しさん
2006/04/03(月) 14:27:310257デフォルトの名無しさん
2006/04/03(月) 14:28:170258デフォルトの名無しさん
2006/04/03(月) 15:57:260259デフォルトの名無しさん
2006/04/03(月) 16:09:020260デフォルトの名無しさん
2006/04/03(月) 16:17:27大学時代の研究室の講師も「僕は物理屋だから…」って言ってた。
0261デフォルトの名無しさん
2006/04/03(月) 16:23:290262デフォルトの名無しさん
2006/04/03(月) 16:33:47俺はそれよりは弱く、得意分野がそれである、くらいで取ってる。
0263デフォルトの名無しさん
2006/04/03(月) 16:53:33俺パチンコ屋だからとかあんま聞かないしw
それはそうと入門Haskell発売に対抗して
やさしいHaskell入門印刷したらすごい量になりましたよ。
0264デフォルトの名無しさん
2006/04/03(月) 16:56:000265デフォルトの名無しさん
2006/04/03(月) 20:43:430266デフォルトの名無しさん
2006/04/03(月) 20:57:580267デフォルトの名無しさん
2006/04/03(月) 21:08:380268デフォルトの名無しさん
2006/04/03(月) 21:09:310269デフォルトの名無しさん
2006/04/03(月) 21:10:46のわりにこのレベルの低さは一体何?
0270デフォルトの名無しさん
2006/04/03(月) 21:11:510271デフォルトの名無しさん
2006/04/03(月) 21:13:20そこはラベルの低さと書くものだよ。
0272デフォルトの名無しさん
2006/04/03(月) 21:50:140273デフォルトの名無しさん
2006/04/03(月) 21:59:060274デフォルトの名無しさん
2006/04/03(月) 22:03:24以外で自らのバカさ加減をフォローできないのか?
0275デフォルトの名無しさん
2006/04/03(月) 22:55:470276デフォルトの名無しさん
2006/04/03(月) 23:24:060277デフォルトの名無しさん
2006/04/03(月) 23:53:480278デフォルトの名無しさん
2006/04/04(火) 02:00:410279デフォルトの名無しさん
2006/04/04(火) 20:58:000280デフォルトの名無しさん
2006/04/04(火) 23:18:420281デフォルトの名無しさん
2006/04/05(水) 01:19:550282デフォルトの名無しさん
2006/04/05(水) 07:38:50class定義する際には後者をつかうみたいなんだけど…
0283デフォルトの名無しさん
2006/04/05(水) 07:39:01つttp://db.ewi.utwente.nl/Publications/PaperStore/db-utwente-0000003696.pdf
0284デフォルトの名無しさん
2006/04/05(水) 08:30:53ほかのアプローチは無かったんかな?
0285デフォルトの名無しさん
2006/04/05(水) 10:28:47それだけわかれば十分使えるでしょ。モナド。
0286デフォルトの名無しさん
2006/04/05(水) 12:59:36typeは既存の型の別名を作る。単なる別名であって全く同じ型。だから、例えば、
type String = [Char]
と定義されているとき、
f :: String -> Int
という関数があったら、fを[Char]型の値に適用できる。
newtypeはdataと同じように、既存の型から別の型を作る。
newtype Nat = Nat Int
という定義は、
data Nat = Nat Int
という定義とほぼ同じ意味で、使いかたも同じ。
逆に言うと、newtypeはdataの制限されたバージョンといえる。
具体的には、データ構築子が一つしかなく、その唯一のデータ構築子が
引数を一つだけ取るような代数的データ型(つまり、フィールドが一つしかないレコード)を
実行効率を損なうことなく定義できるようにしたのがnewtype。
従って、オーバーヘッドを気にしないなら、newtypeを使う必要はない。
逆に、特殊な場合を除いて、フィールドが一つしかないレコードは、
全てdataの代わりにnewtypeを使って定義しても良い。
0287デフォルトの名無しさん
2006/04/05(水) 14:24:350288デフォルトの名無しさん
2006/04/05(水) 14:41:58分かるけど、dataとnewtypeは微妙に意味がちがうから、最適化で変換するのは嫌なんだろう。
data D = D Int
newtype N = N Int
unD (D x) = True
unN (N x) = True
と定義すると、
unD undefined === undefined
unN undefined === True
0289288
2006/04/05(水) 14:44:010290デフォルトの名無しさん
2006/04/05(水) 18:45:18ありがとうございます。
dataがseparated sumなのに対してnewtypeはcoalesced sumのような
感じでliftされないのですね。
コンパイル時にのみ存在するタグみたいなものでしょうか。
0291デフォルトの名無しさん
2006/04/05(水) 19:29:56ワニさんマークの靴下をママが買ってくれたんですが、履いたときにマークは外側にあるのが正しいのか、内側にあるのが正しいのか分かりません。
教えてください。
0292デフォルトの名無しさん
2006/04/05(水) 19:31:34ワニさんマークはワンポイントだよな.なら,普通は外側だと思う.
0293デフォルトの名無しさん
2006/04/05(水) 19:42:17内側と外側の差異は、むしろ連続的な、程度の差なのではないでしょうか?
0294デフォルトの名無しさん
2006/04/05(水) 20:16:11(左足のマークの向き,右足のマークの向き)として、
(左向き,左向き),(左向き,右向き),(右向き,左向き),(右向き,右向き)
の4つの状態が考えられます。
0295デフォルトの名無しさん
2006/04/05(水) 21:16:43いいえ、「ねじれ」や「重なり」も考慮に入れると、連続性という概念は欠かせないものとなります。
同様に、正しさというのも、私にとって正しい、あなたにとって正しくない、その程度の差なのではないでしょうか?
0296Lisper
2006/04/05(水) 21:21:240297デフォルトの名無しさん
2006/04/05(水) 23:05:24(左向き,左向き), (右向き,右向き)
はあるけど、
(左向き,右向き), (右向き,左向き)
はないですよね?
inside-out も含めるのでしょうか?
0298デフォルトの名無しさん
2006/04/05(水) 23:45:05オーバーヘッドはやだ、ってときに使うもんなのかな>newtype
0299デフォルトの名無しさん
2006/04/06(木) 00:21:00>型クラスのインスタンスにしたいけど
他にも使い道はある。
モジュールから抽象型としてエクスポートしたいときとか、
再帰的な型を使いたいときとか、
もっと単純に、新しい型の表現がたまたま既存の型と同じときとか。
0300デフォルトの名無しさん
2006/04/06(木) 02:31:07>unN undefined === True
こうなっている理由はなんなの?
0301デフォルトの名無しさん
2006/04/06(木) 02:55:15一言でいうと、liftされないので、undefined≡(N undefined)だから。
かみくだいて言うと、構築子Nはコンパイル時に解決? されるので、
実行時の unN (N x) のパターンマッチにおいて、引数を (N x) の形に
簡約するまでもなく評価結果をTrueとするから。
0302デフォルトの名無しさん
2006/04/06(木) 06:24:07>290
0303デフォルトの名無しさん
2006/04/06(木) 06:26:01Mathematics of Program Constructionって何?
0304デフォルトの名無しさん
2006/04/06(木) 06:48:36http://www.google.com
0305デフォルトの名無しさん
2006/04/06(木) 07:19:19(左向き,右向き), (右向き,左向き)
はあるけど、
(左向き,左向き), (右向き,右向き)
はないですよね?
の間違いでは?
0306デフォルトの名無しさん
2006/04/06(木) 07:22:15日本語のページはほとんど引っかからないすね
0307デフォルトの名無しさん
2006/04/06(木) 09:48:410308デフォルトの名無しさん
2006/04/06(木) 11:09:060309デフォルトの名無しさん
2006/04/06(木) 11:33:50ただ、Haskellで書かれたコードが難しくなる傾向があるのは事実かも知れん。
0310デフォルトの名無しさん
2006/04/06(木) 11:37:280311デフォルトの名無しさん
2006/04/06(木) 20:12:120312デフォルトの名無しさん
2006/04/07(金) 08:25:090313デフォルトの名無しさん
2006/04/08(土) 23:18:361. 圏論も知らん奴が何でHaskellなんて使ってるの?
2. より良い(Haskellの)コードを書く上で役立つ
3. 背景にある理屈は理解できるが、プログラミング上は大して役に立たない
4. 全く役に立たない
0314デフォルトの名無しさん
2006/04/08(土) 23:29:40プログラム理論の道具として使われる圏論は 4 に近い 3。
ただしプログラム理論で研究をするつもりなら 1 。
代数幾何とかの道具として使われる圏論は、4。
0315デフォルトの名無しさん
2006/04/09(日) 07:49:47圏論とHaskellの距離は、圏論とAlgolやMLやLispやJavaやCとの距離と大差ないよ。
それらの個別的な言語の特徴を一般化する際に使うものだから。
0316デフォルトの名無しさん
2006/04/09(日) 14:39:29リストの処理をするとき、同じことをするのに例えば
(fは非モナド関数、xsはリスト)
l1 = [ f x | x <- xs ]
l2 = map f xs
l3 = liftM f xs
l4 = xs >>= return . f
などと書けるようですが、効率などに違いはあるんでしょうか?
0317デフォルトの名無しさん
2006/04/09(日) 15:08:52普通気にする程の違いはない。気になるなら計測してみるといいかと。以下与太話。
liftMの定義により、l3とl4は同等。
リストの>>=はconcatMapの事だから、l4は以下と同等。
l4' = concat $ map ((:[]) . f) xs
(ただし、多重定義の解決のオーバーヘッドがあるかも知れない)
従って、単なるmapに比べて余計な操作が入る。
l1は定義からするとl4と同等だけど、リストに特化した記法だから
最適化が入ってl2と同等になる可能性がある。
0318デフォルトの名無しさん
2006/04/09(日) 15:38:330319デフォルトの名無しさん
2006/04/09(日) 16:01:570320デフォルトの名無しさん
2006/04/09(日) 18:07:110321デフォルトの名無しさん
2006/04/09(日) 19:47:250322デフォルトの名無しさん
2006/04/09(日) 20:07:230323デフォルトの名無しさん
2006/04/10(月) 11:27:163.1.2にしたらきっちり動きました。3.1は駄目です。
0324デフォルトの名無しさん
2006/04/14(金) 19:54:520325デフォルトの名無しさん
2006/04/14(金) 20:43:10おまえが何者かに依る。
0326デフォルトの名無しさん
2006/04/14(金) 20:59:04著者です
0327デフォルトの名無しさん
2006/04/14(金) 21:26:170328デフォルトの名無しさん
2006/04/14(金) 21:29:480329デフォルトの名無しさん
2006/04/14(金) 21:33:07猛者です
0330デフォルトの名無しさん
2006/04/14(金) 21:33:48先行者です
0331デフォルトの名無しさん
2006/04/14(金) 21:36:15曲者です
0332デフォルトの名無しさん
2006/04/14(金) 21:37:14影武者です
0333デフォルトの名無しさん
2006/04/14(金) 21:38:02悪魔の使者です
0334デフォルトの名無しさん
2006/04/14(金) 21:39:08カチューシャです
0335デフォルトの名無しさん
2006/04/14(金) 21:39:58貴社の汽車で記者が帰社です
0336デフォルトの名無しさん
2006/04/14(金) 21:41:19第三者です
0337デフォルトの名無しさん
2006/04/14(金) 21:42:37読者です
0338デフォルトの名無しさん
2006/04/14(金) 21:43:18むしゃくしゃです
0339デフォルトの名無しさん
2006/04/14(金) 21:45:26生きとし生けるものです
0340デフォルトの名無しさん
2006/04/14(金) 21:46:38モナドです
0341デフォルトの名無しさん
2006/04/14(金) 21:51:15じゃあ私はウェブデザイナーになる!
0342デフォルトの名無しさん
2006/04/14(金) 22:19:160343デフォルトの名無しさん
2006/04/14(金) 22:21:330344デフォルトの名無しさん
2006/04/14(金) 23:06:090345デフォルトの名無しさん
2006/04/15(土) 13:26:150346デフォルトの名無しさん
2006/04/15(土) 13:49:57おまえが何者かに依る。
0347デフォルトの名無しさん
2006/04/15(土) 14:09:230348デフォルトの名無しさん
2006/04/15(土) 15:03:50愛読者です
0349デフォルトの名無しさん
2006/04/15(土) 15:39:59所詮研究者のおもちゃ。
0350デフォルトの名無しさん
2006/04/15(土) 15:53:49そんなもんはどうでも良い。
0351デフォルトの名無しさん
2006/04/15(土) 16:01:490352デフォルトの名無しさん
2006/04/15(土) 16:24:05不便だとは思うが、貧弱ってどの辺が?
0353デフォルトの名無しさん
2006/04/15(土) 16:28:410354デフォルトの名無しさん
2006/04/15(土) 16:50:44なるほど、サンクス。
0355デフォルトの名無しさん
2006/04/15(土) 17:04:35ファイルIOとかネットワークIOとか基本的な機能
0356デフォルトの名無しさん
2006/04/15(土) 17:41:440357デフォルトの名無しさん
2006/04/15(土) 17:44:39I/O無しで何ができる?何もできないだろ。何もできなきゃ無いのと同じ。
0358デフォルトの名無しさん
2006/04/15(土) 17:48:58何が不満なのかよく分からん。
確かに環境に依存する機能を使おうと思うと面倒だが。
>>356
Haskell並に使いやすい手続き型言語があればそれでもいいがな。
0359デフォルトの名無しさん
2006/04/15(土) 18:01:19Haskell vs. Erlang, Reloaded
ttp://wagerlabs.com/articles/2006/01/01/haskell-vs-erlang-reloaded
0360デフォルトの名無しさん
2006/04/15(土) 18:15:54どんな人にとってもお勧めできない。
入門者にとっては説明が足りなさ過ぎるし、熟練者にとっては発展的内容が少なすぎる。
唯一の救いはAppendixにあるPreludeのドキュメントの日本語訳のみ。
0361360
2006/04/15(土) 18:18:330362デフォルトの名無しさん
2006/04/15(土) 18:36:300363デフォルトの名無しさん
2006/04/15(土) 19:16:45そのリンク先、3ヶ月程度の学習でHaskellで大規模アプリを作ろうとしたのが無謀だろ。
不勉強すぎて参考にならん。
0364デフォルトの名無しさん
2006/04/15(土) 19:23:030365デフォルトの名無しさん
2006/04/15(土) 19:37:090366デフォルトの名無しさん
2006/04/15(土) 19:37:50つdarcs
0367デフォルトの名無しさん
2006/04/15(土) 19:39:200368デフォルトの名無しさん
2006/04/15(土) 19:51:35普通のデスクトップアプリだったけど。
0369360
2006/04/15(土) 20:05:43話を聞くところによると、王道的に順序立てた言語本のようだね。
少なくともハズレはないと思う。
実物を見ていないので良書かどうかは答えられない。
0370デフォルトの名無しさん
2006/04/15(土) 20:06:33著 者 乙
0371デフォルトの名無しさん
2006/04/15(土) 20:12:58愚 者 乙
0372デフォルトの名無しさん
2006/04/15(土) 20:40:42じゃあ5月までにバイトしてお金つくっておきます^^
0373デフォルトの名無しさん
2006/04/15(土) 21:01:18haskellがすぐれていたので選ばれた。
0374デフォルトの名無しさん
2006/04/15(土) 21:04:030375デフォルトの名無しさん
2006/04/15(土) 21:27:26つづってくれたら買う。stack dumpに何も情報もない恐怖とか。
0376デフォルトの名無しさん
2006/04/15(土) 21:32:200377デフォルトの名無しさん
2006/04/15(土) 21:35:120378デフォルトの名無しさん
2006/04/15(土) 21:38:100379377
2006/04/15(土) 21:38:11【数学者】Haskellはクソ言語【オナニー】
http://pc8.2ch.net/test/read.cgi/tech/1128011645/
0380デフォルトの名無しさん
2006/04/16(日) 00:45:59修得にコストがかかるというだけでは何の根拠にもならんだろ。
それとも、自転車とかあまつさえ自動車学校に通わなきゃいけない
いけない自動車よりも三輪車を愛用する人ですか。
0381デフォルトの名無しさん
2006/04/16(日) 00:50:540382デフォルトの名無しさん
2006/04/16(日) 10:20:12手続き型に比べて関数型が生産性高いといわれているのですが、それはどのようなところから着てるんでしょうか?
またそれはC++のテンプレート、それを応用したSTL,Boostなどの総称プログラミング、C#のGenerics,delegate、Reflection,CodeDOM、属性などを使って代替することは出来ないものなのでしょうか?
0383デフォルトの名無しさん
2006/04/16(日) 10:40:15http://www.sampou.org/haskell/article/whyfp.html
0384デフォルトの名無しさん
2006/04/16(日) 11:28:26・Haskellは関数型言語です。
・関数型言語とは関数中心のプログラミング言語です。
・関数は入力に対して出力を返します。
・関数型言語には代入が存在しません。
Haskellのメリット
・プログラムが短く書ける
・型チェックが強力
・遅延評価
・代入がない(代入文はプログラムを煩雑にする。たとえば大域変数。オブジェクト指向でいうメンバ変数も規模をクラス内にとどめた大域変数のようなものである。)
・みんなが難しいと思っている言語なのでカッコイイ
0385デフォルトの名無しさん
2006/04/16(日) 11:34:47この代入がないっていう部分が理解できてないんですね。手続き型と考え方が違うんだろうけどそれがわかってない。
オブジェクトという概念はもたないんですか?この場合オブジェクトとは状態をを持つ何かとします。
たとえば、押されている状態とそうでない状態のどちらかを持つチェックボックスとか。
逆にそういうものをHaskellで取り扱いする場合にはどうするんでしょう?
0386デフォルトの名無しさん
2006/04/16(日) 11:46:50レコード型とか使ったらできるんじゃない?
0387デフォルトの名無しさん
2006/04/16(日) 12:15:52「代入がない」といういい方は不正確だと思う。
必要ならいつでもIORef, STRefを使って代入を表現できる。
「不必要に代入を使うことを強制されない」と言った方がいいんじゃないか。
0388デフォルトの名無しさん
2006/04/16(日) 12:17:100389デフォルトの名無しさん
2006/04/16(日) 12:26:41それよりもむしろ 代入文がない の方が正しいかも?
0390デフォルトの名無しさん
2006/04/16(日) 12:31:510391デフォルトの名無しさん
2006/04/16(日) 12:33:03つ モナド
0392デフォルトの名無しさん
2006/04/16(日) 12:33:47それはメリットなのか?
0393デフォルトの名無しさん
2006/04/16(日) 12:35:32まず、遅延評価は理解してる?
あと、プログラミングが「慣れ」であることは大体は共通の認識だろうけど、
とりあえずサンプルプログラムをたくさん見るべきだね。
0394デフォルトの名無しさん
2006/04/16(日) 12:36:19まず、入出力の絡まない処理が代入無しでできるのは分かるか?
0395デフォルトの名無しさん
2006/04/16(日) 12:37:07遅延評価は無関係かと。
0396デフォルトの名無しさん
2006/04/16(日) 12:48:59話のわからない人たちですね。
0397デフォルトの名無しさん
2006/04/16(日) 12:51:15自分の中でプログラムのイメージは複数ある生成・消滅するオブジェクトの状態が、複数の実行スレッドによって変わり行くさまというものなので。
代入なしでオブジェクトの状態を変えることができるのか?という疑問が。
その考え方と関数型のものの考え方はまったく異なるんですかね?
0398デフォルトの名無しさん
2006/04/16(日) 12:54:35いつでも聞けば答えてもらえると思うなよ。
例が見たいなら自分で調べろ。
Haskellを広めたい人がHaskellで書いたプログラムをオープンソースとして公開しているはずだ。
0399デフォルトの名無しさん
2006/04/16(日) 13:02:120400デフォルトの名無しさん
2006/04/16(日) 13:06:51効率を考えない方法だと、状態の違うオブジェクトを毎回生成するような感じ。
### 手続き的なOOP
#oldobj = obj.copy
rtn_val = obj.do_something
#newobj = obj.copy
## newobj.state != oldobj.state
### 関数型
(newobj, rtn_val) = do_something obj
## newobj.state != obj.state
0401デフォルトの名無しさん
2006/04/16(日) 13:12:55個々のデータを、「生成・消滅するオブジェクト」と見る代わりに、
「単なる無個性な値」とみなす。
例えば、住所録を扱うことを考えると、手続き型言語では
「空の住所録オブジェクトを生成し、そこにfoo氏の情報を追加し、bar氏の情報を追加し、…」
と操作するのに対し、関数型言語では、
「「空の住所録にfoo氏の情報を追加したもの」にbar氏の情報を追加したものを、…」
というイメージで操作する。
この方法では、「空の住所録」と「foo氏の情報を含む住所録」と
「foo氏及びbar氏の情報を含む住所録」は全て異なる「値」で、互いに無関係。
0402デフォルトの名無しさん
2006/04/16(日) 13:15:54オブジェクトを毎回生成するのは元のオブジェクトを元に生成?
そうでないなら、どうやってそのオブジェクトの状態の整合性を保障する?
オブジェクトで考えないほうがいいのかな・・・
0403デフォルトの名無しさん
2006/04/16(日) 13:22:22関数型で住所録にfoo氏及びbar氏の情報を登録したい場合、「foo氏及びbar氏の情報を含む住所録」を作るとして、
今度それにあとからdog氏を追加したい場合、「foo氏及びbar氏の情報を含む住所録」というのはどこかにとっといてるんですよね?それを元に「foo氏及びbar氏及びdog氏の情報を含む住所録」をつくると。
だとしたら形式的には毎回オブジェクトを生成してるのかもしれないけれど、実質的には住所録オブジェクトに住所オブジェクトを追加すると変わらない?
0404デフォルトの名無しさん
2006/04/16(日) 13:25:140405デフォルトの名無しさん
2006/04/16(日) 13:31:50>オブジェクトを毎回生成するのは元のオブジェクトを元に生成?
当然。そのためにobjを引数に取っている。
>>403
>実質的には住所録オブジェクトに住所オブジェクトを追加すると変わらない?
常に最新の住所録オブジェクトだけを利用し続けるのであればそう。
0406デフォルトの名無しさん
2006/04/16(日) 13:32:320407デフォルトの名無しさん
2006/04/16(日) 13:38:18だとしたら、それがどのように関数型のメリットであるプログラムが煩雑にならない?とむすびつくのでしょう?
それとも考え方がおかしい?
0408デフォルトの名無しさん
2006/04/16(日) 14:00:03確かに、「最新の住所録」という唯一の住所録があって、それを操作することにしか興味がない場合は、
「プログラムが煩雑にならない」は当てはまらないかもしれない。
0409デフォルトの名無しさん
2006/04/16(日) 14:03:50>だとしたら、それがどのように関数型のメリットであるプログラムが煩雑にならない?とむすびつくのでしょう?
全部が全部煩雑にならないように出来るというわけではないよ。
状態変化とかは手続き型で書いた方が簡単だし。
OOPではデータの特徴を括りだして共通した操作をクラスにまとめ上げるけど、
関数型では処理の共通部分を括りだしてより抽象化した関数にまとめる感じ。
0410デフォルトの名無しさん
2006/04/16(日) 14:15:230411デフォルトの名無しさん
2006/04/16(日) 15:09:14http://www.ipl.t.u-tokyo.ac.jp/~hu/pub/teach/fp/index.html
ここら辺見てみたらどう?実務アプリケーションじゃないけど。
0412デフォルトの名無しさん
2006/04/16(日) 16:19:330413デフォルトの名無しさん
2006/04/16(日) 16:26:19研究中です。
0414デフォルトの名無しさん
2006/04/16(日) 16:32:17「聞けば答えが返ってくるような問題」なら、ググれといわれるだろう。
研究的価値があるのはそれ以上のことで、
たとえアイデアがあったとしても、研究も競争なのでこんなところでは書かないし、
すぐに思いつくようなことなら「聞けば答えが返ってくるような問題」になるから。
0415デフォルトの名無しさん
2006/04/16(日) 16:34:320416デフォルトの名無しさん
2006/04/16(日) 16:35:57俺は放置するよ。
0417デフォルトの名無しさん
2006/04/16(日) 16:41:26そんなに生産性が気になるなら自分で勉強して試してみてくれ。
それだけの調査にも値しないと思うなら世間の評価が固まるまで待てばいい。
Haskellを学んでいて分からないところがあるならここで聞いてくれれば喜んで手伝うが、
生産性の高さを自慢するような芸当は少なくとも俺にはできん。
0420デフォルトの名無しさん
2006/04/16(日) 17:52:18関数型言語は他にはない高度な抽象化機能を提供する、とでも言っておけば良かったのに。
0421デフォルトの名無しさん
2006/04/16(日) 17:59:290422デフォルトの名無しさん
2006/04/16(日) 18:00:28とりあえず胡先生は、そう言ってた。
0423デフォルトの名無しさん
2006/04/16(日) 18:00:280424デフォルトの名無しさん
2006/04/16(日) 18:02:57読解力だかめとこうや。
0425デフォルトの名無しさん
2006/04/16(日) 18:10:09論法がおかしい。
違いを挙げろというなら簡単だ。
それらの違いのうち、何が生産性の差をもたらすかという質問はまた別の話だ。
0426デフォルトの名無しさん
2006/04/16(日) 18:11:410427デフォルトの名無しさん
2006/04/16(日) 18:13:460428デフォルトの名無しさん
2006/04/16(日) 18:29:17やろうと思えば大体は代替出来る。
0429デフォルトの名無しさん
2006/04/16(日) 18:36:400430デフォルトの名無しさん
2006/04/16(日) 18:43:29RubyやCurlみたいな立場になるぞ。
せいぜい面白い言語です、にとどめておけばアンチも出ない。
こんなこと今更言っても既にRubyの道を辿っているようにしか見えない。乙。
0431デフォルトの名無しさん
2006/04/16(日) 18:44:17書きやすいということだけではなく、エラーチェックとかのデバッグ面でも段違いだと思う。
0432デフォルトの名無しさん
2006/04/16(日) 19:01:25考えてみた。あまり当てにしないでくれ。括弧内はそれを可能にする言語要素。
1.抽象化の能力
分離できる概念はかなりの確率で分けて定義できる。(代数的データ型、遅延評価)
共通部分のある処理はかなりの確率で共通化できる。(高階関数)
2.コードの簡潔さ
不要なものを書く必要がない。(変数の値が不変であること)
3.良い設計をencourageする(代数的データ型、第一級の関数)
自信無し。気のせいかも知れない。
で、それぞれC++と比較してみると、
1.はほぼ同等。ただしC++のコードは2.を犠牲にしやすい。
2.は圧倒的にHaskellが有利。
3.(不明)
0433デフォルトの名無しさん
2006/04/16(日) 19:19:080434デフォルトの名無しさん
2006/04/16(日) 19:30:11ユーザは困るが。
0435デフォルトの名無しさん
2006/04/16(日) 19:31:110436デフォルトの名無しさん
2006/04/16(日) 19:32:500437デフォルトの名無しさん
2006/04/16(日) 19:33:48ちょっと聞いてもらえます?
ヒドイんです…。今の彼とは、もぉ〜えっちしたくないんです。
なにがヒドイって、めっちゃくちゃイクの早いんです。
どんなに頑張っても3分間…3分間ファッキングですよ(>。<)
「絵里のアソコが物凄い喰いついてくるんだ」って言うから
私のせいなのかもしれないけど、このままじゃ困っちゃう!
ハマチだって刺身にされても3分間以上は生きているのにね。
私だってもぅハタチ、喰いつくなら美味しいモノが食べたいよ。
3分間でイッてもいいけど、せめて早く動いて欲しいのマイドリーム。
速くか長くか、2者選択のけなげな私にリスペクト。
あなただったら美味しい思いが出来るかな?
試してみたいな。。。
0438デフォルトの名無しさん
2006/04/16(日) 19:36:56彼に遅延評価してもらえ。
実際に評価するまでは速く動くだろうよ。
0439デフォルトの名無しさん
2006/04/16(日) 19:54:03eagerの限界だな
0440デフォルトの名無しさん
2006/04/16(日) 19:55:09やってみたけど、正格性解析されて一気に評価されちゃいました。。。
0441デフォルトの名無しさん
2006/04/16(日) 20:00:41そりゃ、あなたが解析しやすい、単純な女だからさ。
0442デフォルトの名無しさん
2006/04/16(日) 20:42:450443デフォルトの名無しさん
2006/04/16(日) 20:46:300444デフォルトの名無しさん
2006/04/16(日) 20:46:580445デフォルトの名無しさん
2006/04/16(日) 20:50:450446デフォルトの名無しさん
2006/04/16(日) 21:04:17今のスレは役に立たない。
0447デフォルトの名無しさん
2006/04/16(日) 21:15:520448デフォルトの名無しさん
2006/04/16(日) 21:19:06自分が役に立とうという気はないらしいな
0449デフォルトの名無しさん
2006/04/16(日) 21:21:15これ読んだか? http://www.sampou.org/haskell/article/whyfp.html
なんで 1.はほぼ同等なんだ?C++で持ち運んで代入したりできるものといったらプリミティブぐらいだろ?
もっと高位の抽象化の話ならBASICやアセンブラでもできるぞ?
比較するんならC++みたいなメモリリークが起こるバキーな言語じゃなくてJavaとかの方がまだましだと思うんだが。
0450デフォルトの名無しさん
2006/04/16(日) 21:30:48新しいインスタンスを得るのにわざわざnewしたり、既存のものをcopyしたりするのは面倒。
それから、Haskellのコードが簡潔になる傾向がある原因の一つとして、
Haskellでは繰り返しを表現するのに明示的な再帰ではなくリスト操作を使うことが多いんだが、
そういうときリストをサクサク使い捨てることができないととても不便。
0451デフォルトの名無しさん
2006/04/16(日) 21:33:10>なんで 1.はほぼ同等なんだ?C++で持ち運んで代入したりできるものといったらプリミティブぐらいだろ?
ユーザー定義型を持ち運んだり代入したりできる。
書き忘れてたけど、>>432で「C++」と言ってるのは
Boost(や、場合によってはFC++)などのライブラリを十分活用した場合の話。
0452デフォルトの名無しさん
2006/04/16(日) 21:40:34function 第一級の関数
optional Maybeに相当
variant 代数的データ型に相当
lambda 無名関数を構築するためのコンビネータライブラリ 関数の部分適用もできる
tuple タプル
iterator 遅延リストのようなもの
>比較するんならC++みたいなメモリリークが起こるバキーな言語じゃなくてJavaとかの方がまだましだと思うんだが。
俺はJavaは詳しくないんだが、上に挙げたようなライブラリは用意されているんだろうか。
0453デフォルトの名無しさん
2006/04/16(日) 21:45:06ようやくhaskellの真の実力が世間に認知され始めたのかな?
0454デフォルトの名無しさん
2006/04/16(日) 21:50:540455デフォルトの名無しさん
2006/04/16(日) 22:11:03むしろ、あんな本だから影響が大きいのか。
0456デフォルトの名無しさん
2006/04/16(日) 22:24:40ごめんなさい。
はじめの方で自演していました。
あまりに人が少なかったから。
0457449
2006/04/16(日) 22:25:10C++でアルゴリズムや型を抽象化するには必ずクラスやテンプレートを定義しなければならない。
関数型言語の場合は、とりあえず書き始めてアルゴリズムができてきたらその部分をコピーしたり必要ならクロージャに入れて外で使うなり関数内で移動するなり割と簡単にできる。
関数の引数が増えた、とかローカル変数を共有したくなったりしたら、その時点で型を作るなり言語の抽象化機能を使う。(これ自体はC++でもできる)
型の実装を変更しても、ML以降の関数型ならアルゴリズムの実装の変更に対して型を推論させながら修正できるから、わりとスムーズに移行できる。インタプリタがあることが多いのでその場合はリターンも早い。
(つづく)
0458449
2006/04/16(日) 22:26:14カリー化その他の抽象化能力の話もいろいろありますが、こういう感じで関数型言語は書きながら抽象化を進めていくのが容易だ、と言えると思います。
この話はC、C++(Boost含む)、Java、C#、Basic、その他手続き型言語とML以降の関数型言語との比較に於て言える内容でしょう。
>比較するんならC++みたいなメモリリークが起こるバキーな言語じゃなくて
これがまずかったみたいですね。煽るつもりはありませんので。
0459449
2006/04/16(日) 22:29:520460デフォルトの名無しさん
2006/04/16(日) 22:32:35( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
\/ /
( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ /
0461デフォルトの名無しさん
2006/04/16(日) 22:37:090462デフォルトの名無しさん
2006/04/16(日) 23:05:32_(__つ/ ̄ ̄ ̄/_
\/ /
(゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ /
0463432=451=452
2006/04/16(日) 23:07:55結論は分かったけど、例が全然理解できない。
特に、関数型言語でできてC++で出来ないことと、
型推論がコードの修正にどう影響するかがわからない。
良かったら解説してもらえないだろうか。あるいは参考文献でも。
0464デフォルトの名無しさん
2006/04/16(日) 23:34:520465デフォルトの名無しさん
2006/04/16(日) 23:46:000466デフォルトの名無しさん
2006/04/17(月) 00:05:440467デフォルトの名無しさん
2006/04/17(月) 00:12:08パターンマッチは流石にねーだろ。
0468デフォルトの名無しさん
2006/04/17(月) 00:13:180469デフォルトの名無しさん
2006/04/17(月) 00:14:39そういう話をすると、どうせBoostでどうのとか信者が言い出すんだろ。
0470デフォルトの名無しさん
2006/04/17(月) 00:27:06boost::variantにapply_visitorってのがある。
すごく面倒だが。
0471デフォルトの名無しさん
2006/04/17(月) 00:44:480472デフォルトの名無しさん
2006/04/17(月) 01:47:000473デフォルトの名無しさん
2006/04/17(月) 02:08:530474449
2006/04/17(月) 02:24:00ライブラリで関数型言語をエミュレートできることと、関数型言語であるということには遥かにへだたりがあります。
Boostで関数型の振舞いができても、C++のコアに関する細かい知識が無いと結局使いこなすことはできないでしょう。
Boost氏の意見は自分でクラスやテンプレートを定義しないという前提でしか成り立たないのではないでしょうか。
>>464を言わないために言葉で説明してみたけど、これ以上言葉だけの説明は無理に思えます。私も464に同意です。
449はMLの人間でC++ vs 関数型言語にレス付けただけなのでこれで消滅します。すんません。
参考書が示せないので、何かプログラムのテーマを考えておいてください。Haskell初心者で参加します。
0475デフォルトの名無しさん
2006/04/17(月) 02:36:08>>474
木を使うアルゴリズムが分りやすいんでないだろうか。
そんでBoost氏がC++で書いてくれるのか?
プログラムの過程を示すってコードに文字数が要りそうだけど・・・
0476デフォルトの名無しさん
2006/04/17(月) 05:51:47このスレよりもここの作者にメール投げた方が早いよ
http://homepage3.nifty.com/Aransk/contents2.html
0477デフォルトの名無しさん
2006/04/17(月) 22:14:58いちおうこんなのを考えてみた。
data Bound a = Inclusive a | Exclusive a | Unbounded -- 範囲の境界
type Range a = (Bound a, Bound a) -- (下限、上限)
data RangeMap k a =... -- kの範囲にaの値を対応させる写像。木で表現される。平衡木だとなおよい。
empty :: (Ord k) => RangeMap k a -- 空の写像
insert :: (Ord k) => Range k -> RangeMap k a -> RangeMap k a --既存の写像を部分的に上書き
update :: (Ord k) => Range k -> (a -> Maybe a) -> RangeMap k a -> RangeMap k a --既存の写像を部分的に更新
lookup :: (Ord k) => k -> RangeMap k a -> Maybe a
>そんでBoost氏がC++で書いてくれるのか?
いつのまにかBoost氏にされている訳だが。
「書きながらの抽象化」を示してくれるというなら頑張って書きますぜ。
0478デフォルトの名無しさん
2006/04/17(月) 22:17:34・ノードはテキストもしくはエレメント
・エレメントはタグ文字列と子ノードからなる
とりあえず型を定義
data Node = Text String | Element(String,[Node])
deriving (Eq,Show)
・再帰型の中にリスト(子ノード)があると適度に複雑な気がした。
・実はHaskellで相互再帰型の定義の仕方がわからなかった。
・Element a b ではなくて Element(a,b)にしたのはサンプル木を書くときに
Element("html",
[Element("head",
[Text "foo",
Element("meta", [])])])
のように途中で改行してもエラーにならないというコーディングの都合だけの理由。
ステップ:
1 左・深さ優先前順序、いわゆる文書順序でノードを訪れるアルゴリズムを書く
2 左右の順序、深さ・幅の優先順位、前・中・後の順序を変えつつアルゴリズムを書換えていく
3 木の構造を定義しなおして書換える
2の途中である程度見えてくる気がするナァ
0479デフォルトの名無しさん
2006/04/17(月) 22:39:05もう皆どうでもよくなったんじゃないかと思ってたら被ってしまった。
447を見てもすぐには理解できません。Haskell文法のAAの出現を予感。
BoundのInclusive/Exclusiveはどういう意味ですか?
Boost初めて覗いたけど面白そう。
Boostでも再帰型が定義できるんですか?かなり見てみたいです。
でも478でインデントされなかったのは何故だろう?
0480デフォルトの名無しさん
2006/04/17(月) 22:43:36>>477
0481デフォルトの名無しさん
2006/04/17(月) 22:48:00>BoundのInclusive/Exclusiveはどういう意味ですか?
半開区間(0, 4]を(Exclusive 0, Inclusive 4)と書けるといいな、と。
>でも478でインデントされなかったのは何故だろう?
HTMLの仕様と思われる。 を半角スペースの代わりに使うといいかと。
0482デフォルトの名無しさん
2006/04/17(月) 22:52:20全角インデント
半角インデント
kita使ってるけど プレビューでもインデントされない。
kitaと板とどっちがおかしいんだろ
0483デフォルトの名無しさん
2006/04/17(月) 22:53:10ありがとう
0484デフォルトの名無しさん
2006/04/17(月) 22:56:48  半角インデント
0485デフォルトの名無しさん
2006/04/17(月) 22:58:280486デフォルトの名無しさん
2006/04/17(月) 22:59:17プレビューと間違えた。しっかり 入ってます
0487デフォルトの名無しさん
2006/04/17(月) 22:59:27メイン基盤上のチップLE2080,2280,4280のプログラムが
市販品のロムライターで読み込みできます。
確率や連チャンの仕組みが一目瞭然!
攻略法はあなた自身で見つける時代です。
http://www.3-you.com/
0488デフォルトの名無しさん
2006/04/17(月) 23:08:28タコな2chスクリプトがインデントを展開してくれないから
&nbsp;と書くか全角スペースでインデント汁
0489デフォルトの名無しさん
2006/04/18(火) 00:29:38ツォルンの補題まで行ってきました。
なんでそうなったかは自分でもよくわかりません。
明日のナゾナゾにしてもう寝ます。
0490デフォルトの名無しさん
2006/04/18(火) 08:50:420491デフォルトの名無しさん
2006/04/18(火) 09:26:250492デフォルトの名無しさん
2006/04/18(火) 11:46:15俺ってHaskell向いてないかな?
0493デフォルトの名無しさん
2006/04/18(火) 13:49:43自分で書いているように、慣れの問題
0494デフォルトの名無しさん
2006/04/18(火) 15:40:090495デフォルトの名無しさん
2006/04/18(火) 17:07:15a<b<c<d のとき(a,c)<(b,d)ということでしょうか?
でも(a,d)と(b,c)の比較がやっぱり分りません。(a,d)>(b,c)なんだろうか・・・
RangeMapはこういう解釈でいいんでしょうか?
・RangeMap型のオブジェクトは次の写像と同値である。
r(1),r(2)...r(n)のn個の整列された範囲が与えられているとき、
範囲rを自然数iに対応させる写像であって、rをr(i)とr(i+1)との間に挿入すると
また順序列となる。だだしr(1)の前に挿入するときはi=0。
・順序木を導入して効率アップ
0496デフォルトの名無しさん
2006/04/18(火) 20:13:26説明不足だった。申し訳ない。
意図としては、RangeMapはk型の値からa型の値への写像。
例えば、
a0, a1 :: RangeMap Integer String
a0 = insert (Unbounded, Unbounded) "foo" empty
a1 = insert (Inclusive 0, Inclusive 10) "bar" a0
と定義すると、a0はあらゆる値に"foo"を対応させる定数関数で、
a1は、0以上10以下の値には"bar", それ以外の値には"foo"を対応させる関数。
どっちにしても、>>478がまともな例題を提示してくれたので、>>477は用済みな気がする。
0497デフォルトの名無しさん
2006/04/18(火) 21:05:04やってみた。
一応、「書きながらの抽象化」の意味は分かったような気もするけど、
C++で書いた場合との本質的な違いのようなものは分からなかった。
コードの修正に型推論を活用するというのもよくわからなかった。
(これは修正自体をあまりしていないせいかも。)
満足できる結果じゃないけど、いろいろ勉強になった。
良い問題をありがとう。
参考までに、コードを揚げてみた。
ttp://hs.or.tp/php/uploader/up/code321.txt
0498デフォルトの名無しさん
2006/04/18(火) 21:07:440499デフォルトの名無しさん
2006/04/18(火) 21:09:030500デフォルトの名無しさん
2006/04/18(火) 21:10:150501デフォルトの名無しさん
2006/04/18(火) 21:16:590502デフォルトの名無しさん
2006/04/18(火) 21:26:260503デフォルトの名無しさん
2006/04/18(火) 21:40:07型に慣れてないなんて時代遅れだね。
0504デフォルトの名無しさん
2006/04/18(火) 21:42:15それは容易にバグに結びつく。
強い型付きの言語というのは、そういう意味で安全なんだよ。
0505デフォルトの名無しさん
2006/04/18(火) 21:43:460506デフォルトの名無しさん
2006/04/18(火) 22:12:10reading A Gentle Introduction to Haskell Version 98 ... done
reading Twe Dozen Short Lessons in Haskell ... (Interrupt)
reading Yet Another Haskell Tutorial ... (Interrupt)
error: unresolved keywords: class instance deriving monad '...' '>>=' ...
やっと477が普通に見えてきたところです。
相互再帰は普通にできるんですね。
478のステップ2ではこういうかんじで使う関数を想像してました。
traverse Left2Right BreadthFirst InOrder node
ちなみにC++で nodeGenFoldr を書くとどうなるんですか?
速すぎてついていけませんが解析中
reading 2ch/code321.txt ...
0507デフォルトの名無しさん
2006/04/18(火) 22:17:150508デフォルトの名無しさん
2006/04/18(火) 22:23:04そういえば以前MLでfoldを使わずに相互再帰で走査していくときに型推論が役に立ったことがあります。
0509デフォルトの名無しさん
2006/04/18(火) 22:53:37478はXML文書をPythonのElementTreeのように手軽に扱えるライブラリはないかと思って、Haskellに限らずいろいろ探しているときに考えていたことの一部です。
ElementTreeで日本語を読み込むにはかなり細工が必要で、またテキストをエレメントと対等に扱わないので検索がやりにくかったです。
http://haskell.org/hawiki/GhcUnicodeによるとGHC6.6からUnicodeがHaXmlでも普通に扱えるように読めるんですが、ご存知ありませんか?
0510デフォルトの名無しさん
2006/04/18(火) 23:23:12現在のGHCは入出力の際にエンコーディングをiso-8859-1と仮定するので、
日本語を正しく扱うことは出来ません。
ただし、情報が失われる変換ではないので、文字列をブラックボックスとして操作する限りでは
問題は起こらないかも知れません。
実際、私はHaXmlを日本語を含む文書を操作するのに使っています。
上記の問題はGHC付属のIOライブラリの欠陥であって、プログラムからUnicodeの文字を扱うこと自体は正しく出来ます。
従って、入出力用の外部ライブラリとHaXmlを組み合わせることで正しい扱いが出来るかも知れません。
例えば、使ったことはないのですが、
http://www.repetae.net/john/recent/out/HsLocale.html
に、ロケール依存の入出力をするライブラリがあります。
>http://haskell.org/hawiki/GhcUnicode
リンク先の記述はUnicodeの文字クラスに関するもので、この問題には関係ないかと思います。
0511デフォルトの名無しさん
2006/04/18(火) 23:24:16関数を書いたあと推論を固定したいときはコピペして宣言、気にくわなければ型に手を加える、で十分だと思います。
0512デフォルトの名無しさん
2006/04/18(火) 23:27:13a -> a 型の関数はまず間違いなく id だし、a -> b -> b 型は、第二引数をそのまま返すものであろう。
a -> Int とかなら、何を適用してもIntの定数を返す関数と推測される。
(a -> b) -> [a] -> [b] なんていう型の関数があったら、返値の要素は、第一引数である関数で
もって第二引数の要素から作ったものである。
自分で書いた関数が (a -> b) -> a -> a とか推論されたら、第一引数の関数またはその返値を
どこかで捨ててしまっている。
型推論を活用しながらコーディングってつまりこういうことだと思っているが、違う?
0513デフォルトの名無しさん
2006/04/19(水) 00:30:38>自分で書いた関数が (a -> b) -> a -> a とか推論されたら、第一引数の関数またはその返値を
>どこかで捨ててしまっている。
> 型推論を活用しながらコーディングってつまりこういうことだと思っているが、違う?
だいたいそう。
1) 予想した型と推論された型が一致しなければ、実装か、そもそもアルゴリズが間違っていた
2) 予定の型を書いておいて型エラーが無くなるようにコーディグする
2a) 関数の型を修正するときに先に型を書き、型エラーが無くなるまで中身を修正する
2a') 関数を分割するときに部分的な型を抜き出し、コピペした実装と一緒に宣言して2a)
2c) 最初に型を宣言して頑張ってコーディングする
2c)はあまり記憶が無いけどこんなかんじかなあ。
予想とはいっても型が長いときはびっくりするような推論が帰ってくるから、それをもとに正確な型はこうだ、と決めてる気がします。
始めのころは推論にびっくりしてストップしていましたが、何かを書きかけている途中でそれが起こるとしょうがなく解析して理解しました。慣れていくと実は逆の活用ができるんだ、と感じるようになりました。
ありきたりだけど、型推論に慣れる・慣れないというのはそういう「driving application」があるかどうかの話だと思います。
結局464という話になりますが。
0514デフォルトの名無しさん
2006/04/19(水) 01:04:24ttp://hs.or.tp/php/uploader/up/code322.cpp
C++版。
C++には関数的なリストが用意されていないので、vectorと副作用でごまかした。
もちろん、自分で定義すればいいんだけど、面倒だったので。
0515デフォルトの名無しさん
2006/04/19(水) 01:07:25参考になりました。ありがとう。
fptoolsでHaXmlをダウンロードしてあるのにghc6.4には何故かインストールされてませんでした。libraries/以下だけを再ビルドする方法も思い出せません。そもそもできたかどうか。トップからビルドし直すとまた信じられないような時間かかるし。
ghcはインストールがうっとうしいです。FFIもいっぱいあって、バージョン間の互換性も低いし。Makefileを書きかえてライブラリを追加したりとか。
インストールが成功したころには全然別の所に行ってしまってることが多いのでもうしばらくして試してみます。
reading 2ch/code321.txt(continued) Yet Another Haskell Tutorial(continued)...
0516デフォルトの名無しさん
2006/04/19(水) 01:16:07わざわざありがとう。
これがHaskellと同じように読み書きできるんですね。恐れ入りました。
ちょっと頭のリソースが足りないので、今度Boostを試してみるときに参考にします。
0517デフォルトの名無しさん
2006/04/19(水) 13:49:44前は半日くらいでできてたはずなのに。
0518デフォルトの名無しさん
2006/04/19(水) 17:33:13どんなコンピュータだよ
0519デフォルトの名無しさん
2006/04/19(水) 20:58:500520デフォルトの名無しさん
2006/04/19(水) 22:22:000521デフォルトの名無しさん
2006/04/19(水) 22:33:470522デフォルトの名無しさん
2006/04/19(水) 22:48:020523デフォルトの名無しさん
2006/04/20(木) 07:17:46っ [ P. Wadler, Theorems for Free! ]
0524デフォルトの名無しさん
2006/04/20(木) 07:49:05もちろん読んでる。Reynoldsも。
0525デフォルトの名無しさん
2006/04/20(木) 21:16:080526 ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2006/04/20(木) 23:12:51ミレ'"~,-,、 ! ! ' '" ̄ .ノ \ヾ:、
K/ー'~^~_/ ヽミ:ー‐‐'" ヽ i.
!〉 ー―'"( o ⊂! ' ヽ Y_
i ,.:::二二ニ:::.、. l i
.! :r'エ┴┴'ーダ !Kl
.i、 . ヾ=、__./ ト=
ヽ. :、 ゙ -―- ,; ,!
\. :. .: ノ
ヽ ヽ . . . . . .イ
0527デフォルトの名無しさん
2006/04/21(金) 19:26:11Microsoft Researchの人が書いてた埋め込み言語のコンパイラHaskellで書くとこんなにスゲェぜ!
風なペーパーを見掛けて気になってたんですが、どこで見掛けたのかすらわからなくなって
もう気になって気になって・・・
+compiler +"in haskell" とかでググってもそれっぽいの出てこないし。あぁ気になる。
0528デフォルトの名無しさん
2006/04/21(金) 19:42:51だから言語処理系の実装も例外ではないというだけの話。
特にI/Oが比較的単純でロジックの実装に集中できるから得意中の得意といっていい。
0529デフォルトの名無しさん
2006/04/21(金) 20:21:19あらゆる分野で断トツ。
0530デフォルトの名無しさん
2006/04/21(金) 20:35:17一風変わったオモチャだと思ってるけど違うの?
0531デフォルトの名無しさん
2006/04/21(金) 20:42:360532デフォルトの名無しさん
2006/04/21(金) 21:47:470533デフォルトの名無しさん
2006/04/21(金) 22:07:290534デフォルトの名無しさん
2006/04/22(土) 09:47:58Racc本の青木峰郎さんに期待age
0535デフォルトの名無しさん
2006/04/22(土) 10:24:060536デフォルトの名無しさん
2006/04/22(土) 11:14:580537デフォルトの名無しさん
2006/04/22(土) 16:41:51プログラム中で定数として色々な計算に使っていた値(重力定数とか)を、
「コマンドラインの引数で値を指定できるようにして」といわれた時とか。
main以下のほぼすべての関数に、その値を表す引数を追加する
(もしくはmonadを使ってその受け渡しをラップする)羽目に…
こういう時だけは破壊的なMLが羨ましくなる。
0538デフォルトの名無しさん
2006/04/22(土) 16:47:50激しく同意。
パラメータつきモジュールみたいな言語要素が欲しい。
\(g :: Double) -> module Foo where ...
0539デフォルトの名無しさん
2006/04/22(土) 16:55:400540デフォルトの名無しさん
2006/04/22(土) 17:06:39つ Implicit parameters
0541デフォルトの名無しさん
2006/04/22(土) 17:19:480542デフォルトの名無しさん
2006/04/22(土) 17:54:260543デフォルトの名無しさん
2006/04/22(土) 18:05:54こういうのは?
data Foo = Foo {f1 :: ..., f2 :: ..., f3 :: ...}
ConstructFoo g = Foo f1 f2 f3
where
f1 = ...
f2 = ...
f3 = ...
0544デフォルトの名無しさん
2006/04/22(土) 18:24:20それもちょっと考えたけど、いちいち型を定義するのが面倒だし、
対話環境から使いにくいような気がした。
でも見直してみたら
First-class Modules for Haskell
http://research.microsoft.com/~simonpj/Papers/first-class-modules/index.htm
もそんな感じで実装してあるな。
0545デフォルトの名無しさん
2006/04/22(土) 19:15:38後から可変にするのはやっかいだね。
0546527
2006/04/22(土) 21:49:47マジですか。ちょっと勉強してみようかなとか思ってきた。
HaskellにLispのマクロみたいな機能ある?コレがないと暮らせないんだけども。
0547デフォルトの名無しさん
2006/04/22(土) 22:14:18勉強したいというなら止めないが、>>528-529を真に受けるなよ。
>HaskellにLispのマクロみたいな機能ある?コレがないと暮らせないんだけども。
標準じゃないけど、template haskellってのがある。
0548デフォルトの名無しさん
2006/04/23(日) 07:16:21538ではないが、もう少し詳しく教えてください
0549デフォルトの名無しさん
2006/04/23(日) 07:36:00Haskell への憧れが一気に冷めました
時代の最先端をいく言語だと思ってたんですが
0550デフォルトの名無しさん
2006/04/23(日) 08:44:350551デフォルトの名無しさん
2006/04/23(日) 09:23:490552デフォルトの名無しさん
2006/04/23(日) 13:31:370553デフォルトの名無しさん
2006/04/23(日) 18:56:04worldが関係ないので。
0554デフォルトの名無しさん
2006/04/23(日) 22:33:04そうでない動作を区別しないことじゃないだろうか、とふと思った。
getHomeDirectoryとかreadArrayなんかの読み出し動作は
相対的な実行順序を指定せずに使うことができるべきだよな。
0555デフォルトの名無しさん
2006/04/23(日) 23:25:54読み出すだけの動作は、影響を与えないが、
「影響を受ける」から、やはり実行順序依存なのだが。
純関数的なものはモナドに入れずに、例えばdo構文の外で
let, where束縛すりゃいいし。
0556デフォルトの名無しさん
2006/04/24(月) 02:20:08こんな仕組み作るぐらいなら素直にimperative使えよ・・・。orz
0557デフォルトの名無しさん
2006/04/24(月) 08:11:10いや、「世界に影響を与える」動作との相対的な実行順に依存するのは分かるんだが、
v[i] = v[i-1] + v[i+1];
みたいな操作でreadArray間の実行順を指定するのは馬鹿馬鹿しい。
厳密には違う話かも知れないけど、
home <- getHomeDirectory
h <- openFile (home++"/.foorc")
とか、
eof <- isEOF
if eof ...
とかも同様に馬鹿馬鹿しく感じる。
0558デフォルトの名無しさん
2006/04/24(月) 08:14:550559デフォルトの名無しさん
2006/04/24(月) 14:29:120560デフォルトの名無しさん
2006/04/24(月) 18:48:07Runtime Typecasting ね
http://pugs.blogs.com/audrey/2005/12/runtime_typecas.html
0561デフォルトの名無しさん
2006/04/24(月) 22:03:250562デフォルトの名無しさん
2006/04/24(月) 22:19:020563デフォルトの名無しさん
2006/04/24(月) 22:27:00あのDQN雑誌にHaskellの記事が載ったそうだけど。
0564デフォルトの名無しさん
2006/04/24(月) 22:28:400565デフォルトの名無しさん
2006/04/25(火) 00:22:29手続き型言語とかオブジェクト指向言語でプログラム書いてると,つねにプログラム全体を意識してないと
きちんとしたプログラムを書けないわけですよ.「この変数 hoge はこのループに入る前にこの関数でこういう処理を
されたから値は A か B か C のはず.だから今書きかけのこの行で foo という処理をしても問題ない.」てな感じ.
最近集中力が落ちてきてるうえに日常的にプログラムを書くわけではない僕にはこれが辛い.
ちなみに先日 elisp でプログラム書いてて,型をあわせるのに随分気を使ったです.
でも Haskell だと
*関数の定義を積み上げてプログラムを書く
*プログラム中に現れる値は恒に同じ値(参照透過性)
*型の間違いをコンパイラがチェックしてくれる
などから,考える範囲を局所化してもちゃんとしたプログラムを書くことができる.
つまり,頭は使うかもしれないけど神経は使わなくてよい.頭を使うと後で生かせるけども神経を使っても疲れるだけ.
神経が消耗しないだけ生産性はあがってると思うよ.
0566デフォルトの名無しさん
2006/04/25(火) 00:27:12参考にならんかしらんけど.
0567デフォルトの名無しさん
2006/04/25(火) 00:50:12一応 C で書くときはHoare論理を意識してるけど、かなりめんどい。
0568デフォルトの名無しさん
2006/04/25(火) 01:01:05お前はHoare論理と書きたかっただけとちゃうんかと・・
0569デフォルトの名無しさん
2006/04/25(火) 02:54:38お前は本当にHoare論理を意識してるのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、Hoare論理って書きたいだけちゃうんかと。
0570デフォルトの名無しさん
2006/04/25(火) 10:57:510571デフォルトの名無しさん
2006/04/25(火) 13:36:340572デフォルトの名無しさん
2006/04/25(火) 15:43:07>頭は使うかもしれないけど神経は使わなくてよい.
>頭を使うと後で生かせるけども神経を使っても疲れるだけ.
なるほどね。でも現状CやJavaがこれだけ使われてる時代において、
神経を使うことを嫌うっていうのは、もうプログラマとしての適性を
亡くしてしまったともいえるな。
もしかしてプログラマの適性を亡くしてしまった人、もしくは最初からない人が
関数型言語に興味を持ってたり。
0573デフォルトの名無しさん
2006/04/25(火) 16:04:49もっとコードベースのお話してよ。
0574デフォルトの名無しさん
2006/04/25(火) 16:25:52同意。
しかし、ネタがない。
0575デフォルトの名無しさん
2006/04/25(火) 16:36:440576デフォルトの名無しさん
2006/04/25(火) 16:46:020577デフォルトの名無しさん
2006/04/25(火) 16:50:060578デフォルトの名無しさん
2006/04/25(火) 16:51:270579デフォルトの名無しさん
2006/04/25(火) 17:13:000580デフォルトの名無しさん
2006/04/25(火) 18:04:34言語仕様を覚えるだけなら誰でもできるけど、本質的なことは本当に理解している人しか見えてこないよね。
0581デフォルトの名無しさん
2006/04/25(火) 18:05:370582デフォルトの名無しさん
2006/04/25(火) 18:06:420583デフォルトの名無しさん
2006/04/25(火) 18:07:410584デフォルトの名無しさん
2006/04/25(火) 18:19:100585デフォルトの名無しさん
2006/04/25(火) 18:34:28それを知らなければ有効に活用できないから言ってんじゃん。
0586デフォルトの名無しさん
2006/04/25(火) 18:34:450587デフォルトの名無しさん
2006/04/25(火) 18:47:160588デフォルトの名無しさん
2006/04/25(火) 18:47:19「有効」って言葉をどういう意味で使ってるか分からんが、
他の言語と比べて(そいつにとって)役に立つならHaskellを使う動機として十分であって、
必ずしもHaskellの能力を最大限活用する必要はないだろ。
0589デフォルトの名無しさん
2006/04/25(火) 18:47:23ほら、こういう口だけ理屈屋しかいないから、具体的なコードの質問ができないんだよ。
0590デフォルトの名無しさん
2006/04/25(火) 18:48:170591デフォルトの名無しさん
2006/04/25(火) 18:49:31Haskellを触ろうと思っているような人なら素人じゃないだろうし。
0592デフォルトの名無しさん
2006/04/25(火) 18:50:410593デフォルトの名無しさん
2006/04/25(火) 18:52:050594デフォルトの名無しさん
2006/04/25(火) 18:53:26議論はそれでいいんじゃね?
言語仕様を把握していない初心者は発言するな、って意味だったら賛成できんが。
0595デフォルトの名無しさん
2006/04/25(火) 18:57:39世の中でもっとも力のあるパラダイムであるオブジェクト指向やらアスペクト指向やら、また様々な開発手法との連携という点では
はっきり言ってまだ何も確立されていない。
このような状況の言語を一般的なプログラマ・ど素人プログラマが理解できるわけがない。
0596デフォルトの名無しさん
2006/04/25(火) 19:05:310597デフォルトの名無しさん
2006/04/25(火) 19:06:28そんなことは一言も言っていない。論理的思考が苦手なのか?
ただ自分の体験談を語っているだけだ。
0598デフォルトの名無しさん
2006/04/25(火) 19:16:48そしてその言語ではこういうことができるんだけどHaskellではどれくらい簡単にできるのか聞けばいいんじゃないかな。
まったくプログラミングしたことがない人は比較対象がないからHaskellがいいのか悪いのか判断するのが難しいと思う。取り敢えず他の言語を使ってから話に参加するといいんじゃない?
0599デフォルトの名無しさん
2006/04/25(火) 19:39:16>Haskellはまだまだ素人には使いにくい言語だし
>(...)
>このような状況の言語を一般的なプログラマ・ど素人プログラマが理解できるわけがない。
前提と結論が同じ訳だが。
0600デフォルトの名無しさん
2006/04/25(火) 19:43:030601デフォルトの名無しさん
2006/04/25(火) 19:43:490602デフォルトの名無しさん
2006/04/25(火) 19:44:53確かに。しかし、
>Haskellはまだまだ素人には使いにくい言語だし
これには全く同意できんな。
少なくとも議論の前提にすることじゃない。
0603デフォルトの名無しさん
2006/04/25(火) 19:55:32これからHaskellに乗り換えてみようかと考えています。
今使っている言語はCiCです。
CiCではimpredicativeな型を使って、sort済みlist型のような洗練型を
定義できるのですが、Haskellではどれくらい簡単にできますか?
0604デフォルトの名無しさん
2006/04/25(火) 19:58:07>>595の「理解」というのは、利用する価値があるという理解のことね。
0605デフォルトの名無しさん
2006/04/25(火) 21:51:38まだ、実用として使えるレベルにないのと
便利さ的にも発展段階な感じがする。
0606デフォルトの名無しさん
2006/04/25(火) 22:04:290607デフォルトの名無しさん
2006/04/25(火) 22:21:35再帰処理を学ぶには最適な言語な気がしますが、
実用がまるで思い浮かびません。
皆さんは何に使ってるのですか?
ぼくは普通のテキスト処理ならperl、guiならjavaを普段使ってます。
趣味でpythonも好きですが、
Haskellだと言語自体を学んだら
次に何をしたらよいやら…
道は険しいのでこのまま勉強だけでも
実は楽しいですが。
0608デフォルトの名無しさん
2006/04/25(火) 22:38:39言語を覚えたいだけなら別に何も文句は言わないけど、何のための言語かというのはちゃんと理解しておいたほうがいいよ。
あと、Haskellはマイナー言語の一つなので、確かに知っていることは悪くないことなんだけど、誰もそれを評価してくれないよ。
面接で「Haskellを覚えています」と言ったところで、せいぜい「ふーん・・・」と返されるだけだからね。
再起処理がしたいならあなたが覚えている言語で十分できるから、別にHaskellでなくてもいいんじゃないかな?
0609デフォルトの名無しさん
2006/04/25(火) 22:45:40>603にも回答お願いします。
0610デフォルトの名無しさん
2006/04/25(火) 22:51:29わかりません
0611デフォルトの名無しさん
2006/04/25(火) 22:57:550612デフォルトの名無しさん
2006/04/25(火) 23:09:470613デフォルトの名無しさん
2006/04/26(水) 16:41:10変数がなくて、なんで動くの?
使う人がたとえば5番を選んだとき、それは、どこに入力されるの?
0614デフォルトの名無しさん
2006/04/26(水) 17:03:570615デフォルトの名無しさん
2006/04/26(水) 17:14:54代入はなくても初期化はある、という落ちだと思っとけばおk
0616デフォルトの名無しさん
2006/04/26(水) 17:23:140617デフォルトの名無しさん
2006/04/26(水) 17:24:070618デフォルトの名無しさん
2006/04/26(水) 18:20:36つhttp://www.google.co.jp
0619デフォルトの名無しさん
2006/04/26(水) 18:29:04一言で言うと、
全ての可能な関数の挙動があらかじめ抽出されていて、
その組み合わせでプログラミングを行う
オブジェクト志向と関数型言語の合いの子
だったらいいな
0620デフォルトの名無しさん
2006/04/26(水) 18:34:26出てこないんだけど。
0621デフォルトの名無しさん
2006/04/26(水) 18:59:25定理証明器とかそっちの話か。
0622デフォルトの名無しさん
2006/04/26(水) 18:59:57Constructionsね、失礼。
0623デフォルトの名無しさん
2006/04/26(水) 19:07:33なんとなくわかった。
0624デフォルトの名無しさん
2006/04/26(水) 19:25:30CiC(CCのsuberset)が奥側右上だな。
0625デフォルトの名無しさん
2006/04/26(水) 19:36:200626デフォルトの名無しさん
2006/04/26(水) 22:52:29そうあるべきだから、
代入がないと断言するのが正しいと思う。
0627デフォルトの名無しさん
2006/04/27(木) 11:30:02喜び勇んでインストールしたんだが、lib/ が無くて、
HS*.o やら libHS*.a やら gcc.exe やら perl.exe やらが
ベースディレクトリ直下にずらずらと並んでおる。
どういう構成変更があったんだ。
0628デフォルトの名無しさん
2006/04/27(木) 14:37:13linuxでビルドすると .../ghc-6.4.2 以下に hslibs-imports/ icons/ imports/ include/ ができるよ。
0629デフォルトの名無しさん
2006/04/27(木) 21:08:32get ってどこから中身を持ってきているんですか?
しかしこの本簡単なところばかり詳細に説明して難しいところは説明も例も無いって・・・
0630デフォルトの名無しさん
2006/04/27(木) 21:22:45Stateモナドの動作は、外部から「状態」を受け取って、それに応じて変更された「状態」を返す。
getは、外部から受け取った「状態」を、そのまま結果にする動作。
get :: State s s
get = State (\s -> (s, s))
つまり、現在の状態がsの時、get後の状態もsで、getの結果もs。
>しかしこの本簡単なところばかり詳細に説明して難しいところは説明も例も無いって・・・
多岐にわたる高度な内容を掘り下げて説明するのは大変だと思う。
0631デフォルトの名無しさん
2006/04/27(木) 21:52:22(立ち)読みしましたが、かなり分かりやすかったです。
高階関数とか遅延評価とか無限列を扱えるとか凄かったです。
0632デフォルトの名無しさん
2006/04/27(木) 21:57:30do構文を見たら>>=、returnに置き換えてみるべし
0633デフォルトの名無しさん
2006/04/28(金) 00:26:59runState (m0 >>= f1 >>= f2 >>= ... >>= fi) s0
let (v1, s1) = runState m0 s0
(v2, s2) = runState (f1 v1) s1
(v3, s3) = runState (f2 v2) s2
...
in runState (fi vi) si
get >>= 〜の場合は
runState get s0 == (s0, s0)で上のv1がs1と同じ値になる。
0634デフォルトの名無しさん
2006/04/28(金) 03:31:02日本の政治家が好みそう
0635デフォルトの名無しさん
2006/04/28(金) 03:33:15GHC6.4.2でたぞ〜
以上。今だhaskell一行もプログラミングしていない 入門Haskellを飾っているおいらがお伝えしました。
0636デフォルトの名無しさん
2006/04/28(金) 07:33:06>>519
0637デフォルトの名無しさん
2006/04/28(金) 10:50:56,,r 〈:::::::::) ィ::::::ヽ
〃 ,::::;r‐'´ ヽ::ノ
,'::;' /::/ __
l:::l l::::l /:::::) ,:::::、 ji
|::::ヽ j::::l、ゝ‐′ ゙:;;:ノ ,j:l
}:::::::ヽ!::::::::ゝ、 <:::.ァ __ノ::;!
. {::::::::::::::::::::::::::::`='=‐'´:::::::::/
';::::::::::::ト、::::::::::::::i^i::::::::::::/
`ー--' ヽ:::::::::::l l;;;;::::ノ
`ー-"
【ラッキーコアラ】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です。
0638デフォルトの名無しさん
2006/04/28(金) 19:33:590639デフォルトの名無しさん
2006/04/28(金) 20:18:13>>638 みたいに言われて、
「あー、俺は、不幸になるんだ。」
と、思い込んだおかげで、
些細な事にも感謝するようになって、
幸せになったらしいよ。
0640デフォルトの名無しさん
2006/04/28(金) 20:40:24俺はお前なんかにだまされないよ
0641デフォルトの名無しさん
2006/04/28(金) 20:57:120642デフォルトの名無しさん
2006/04/28(金) 21:02:230643デフォルトの名無しさん
2006/04/28(金) 21:04:05/": : :/: : : : : : : : : : : : : : ::|: : :|: |: : : ヽ: : : : : : :ヽ /
/: : : ::/: : : : : : : : : : : : :/:/}: : i: :|: : : : :ヽ: : : : : : :V
/: : : : :|: : : : : : : /: ::/:: / /: :/: / ヽ: : : : }: : : : : : :l 、′ 、 ’、 ′ ’
`.{: : : : : :|: : : : : : : : ::/.// /://:/-―--:、; |: : : : : : :|
|: : : :{: : |: : : :,斗ァ''フ" /" // \ヽ|: : i : : ::| .
|:i: : :i: : :l r彡"´ " / }: :ノ : : ::| 、′・. ’ ; ’、 ’、′‘
l: i: : { : : l | __,.. / ''ェ;___,ェ; /: : : : /∧ ’、′・ ’、.・”; ”
. ',ヽ: : : : ヽl ,r==="  ̄ ̄ ./: : : :ノ/ l . ’、′ ’、 (;;ノ;; (′‘ ・.′”
\\: : : \ ! /, r '´ }: : :ヽl ’、′・” ;
|: : : { `ー > /{ * }: : ヽl . 、 ’、 ’・ 、´⌒,;y'⌒((´;;;;;ノ、"'人
|:/: : { __ i/ ヽ ./: { }:_:: : : : l 、(⌒、 ヽ
. //: : : :{ "iヽ { :ヽ、 ⌒ /:__ : { / ノ: : : : :.'., _( ´;`ヾ,;⌒)´ 从⌒ ;) `⌒ )⌒:`.・
l/: : : : : :} r−┘、: ::r`vr‐ - ´|: : : | _」_{./ ./: : : : : : : '., :::::. ::: >>>>641::::)."::⌒) ;;:::)::ノ
/: : : : : : : { `ヽ、 ヽ.L._ヽ. レ'V__ ヽ/: : : : : : : : : :'., ノ ...;:;_) ...::ノ ソ ...::ノ
/: : : : : : : : r ト *|ヽ/ ノ ヽ.'、 / { (___ 〕r、_: : : : : : : '.,
: : : : : : : : :∧.l.} }〔 ´ / ヽG=ニ:|( ./r'/rく: : : : : : : : :',
0644デフォルトの名無しさん
2006/04/28(金) 21:31:59みなさんだまされないでください。
0645デフォルトの名無しさん
2006/04/28(金) 21:34:310646デフォルトの名無しさん
2006/04/28(金) 22:10:02もっとライブラリ書け!
もっとアプリ書け!
…と自分を煽ってみるてすと
0647デフォルトの名無しさん
2006/04/28(金) 22:18:150648デフォルトの名無しさん
2006/04/29(土) 01:15:39だったら青木さんの原稿チェックMLに参加してたみたいだから、まだ興味は持ってると思う。
0649デフォルトの名無しさん
2006/04/29(土) 01:41:39非標準的な外部ライブラリを別途インストールしなくても動く)
バイナリを作れるのか?
そうでなければ、オープンソース外の世界には到底広まらんだろう。
0650デフォルトの名無しさん
2006/04/29(土) 01:50:41日々あの実装はいただけないとか、この方が高速だとかジェダイ会議して
ライブラリ広めれば?
0651デフォルトの名無しさん
2006/04/29(土) 04:14:260652デフォルトの名無しさん
2006/04/29(土) 04:56:13おまえらも、これから学んで一年後くらいにruby動かせるようにしたら?
0653デフォルトの名無しさん
2006/04/29(土) 05:54:350654デフォルトの名無しさん
2006/04/29(土) 07:50:240655デフォルトの名無しさん
2006/04/29(土) 08:24:180656デフォルトの名無しさん
2006/04/29(土) 09:24:19John Meachamは5年くらいかけてほぼ一人でHaskellコンパイラ(jhc)を書いた。
今のjhcのソースは35000行ほど。
0657デフォルトの名無しさん
2006/04/29(土) 10:04:221日平均20行ほど。
0658デフォルトの名無しさん
2006/04/29(土) 10:10:43難しい
0659デフォルトの名無しさん
2006/04/29(土) 10:13:23http://www.ipsj.or.jp/07editj/promenade/
0660デフォルトの名無しさん
2006/04/29(土) 12:02:16年間7000行しか書かなかったのか
0661デフォルトの名無しさん
2006/04/29(土) 16:42:25つ RType
http://mono.kmc.gr.jp/~oxy/hiki.cgi?rtype
0662デフォルトの名無しさん
2006/04/30(日) 00:26:510663デフォルトの名無しさん
2006/04/30(日) 07:04:51Haskell って最先端とか言っておきながら
自分自身を記述するのも大変なのか…?
0664デフォルトの名無しさん
2006/04/30(日) 11:28:550665デフォルトの名無しさん
2006/04/30(日) 11:41:590666デフォルトの名無しさん
2006/04/30(日) 12:20:270667デフォルトの名無しさん
2006/04/30(日) 12:51:10Haskellってそんなに処理系を記述するのに向いてるの?
0668デフォルトの名無しさん
2006/04/30(日) 12:57:18遊びに決まってんじゃん ばーか
0669デフォルトの名無しさん
2006/04/30(日) 12:58:01インタプリタを書いた場合のメモリ使用量・実行速度の問題を別にすれば、
処理系を書くのにものすごく適した言語だと思う。
0670デフォルトの名無しさん
2006/04/30(日) 13:07:30結構速いような。
0671デフォルトの名無しさん
2006/04/30(日) 13:19:01いいえ
0672デフォルトの名無しさん
2006/04/30(日) 13:39:04どっちの文の否定ですか?
0673デフォルトの名無しさん
2006/04/30(日) 14:13:12そっちのです
0674デフォルトの名無しさん
2006/04/30(日) 14:30:17> インタプリタを書いた場合のメモリ使用量・実行速度の問題を別にすれば、
> 処理系を書くのにものすごく適した言語だと思う。
>>179 みたいなチュートリアルがあるくらいだしね。
0675デフォルトの名無しさん
2006/04/30(日) 20:16:14――えっ、まだしてないの?あんた、SOS団の一員としての自覚あるの?
――何、「曲のほうは?」って?それなら心配いらないわ!
なんったって、団長のあたしが保証するんだから間違いないわ!
一度聴いたら、ぜ〜〜ったい踊りたくなるんだから!
涼宮ハルヒの憂鬱ED「ハレ晴レユカイ」5月10日発売!
絶対買いなさい!!
0676デフォルトの名無しさん
2006/04/30(日) 22:07:15私もぜひ入りたいです。
0677デフォルトの名無しさん
2006/04/30(日) 23:39:07Hugsでは動いた。
以上、チラシの裏
0678デフォルトの名無しさん
2006/04/30(日) 23:40:58KahnはNS団にいます。
0679デフォルトの名無しさん
2006/05/01(月) 07:49:15『Haskell Boy』
映画化決定
0680デフォルトの名無しさん
2006/05/01(月) 08:42:13main = putStrLn hoge
hoge = 2
0681デフォルトの名無しさん
2006/05/01(月) 08:51:39putStrLnは引数としてStringを取る。
一方hogeは数値なので、型が合わない。
0682デフォルトの名無しさん
2006/05/01(月) 09:28:14main = putStrLn $ show hoge で。
あるいは単純に
main = print hoge
0683デフォルトの名無しさん
2006/05/01(月) 10:39:05おおーできた!
ありがとうございました。
0684デフォルトの名無しさん
2006/05/01(月) 10:57:31--リストの中央インデックスを求める
middle :: [a] -> Int
middle [] = -1
middle x = (ceiling half) - 1
where half = fromIntegral (length x) / fromIntegral 2
--リストの中央値を返す
median :: [a] -> a
median x = x !! (middle x)
bsearch k [] = -1
bsearch k x
| median x > k = bsearch k (take (middle x) x)
| median x == k = middle x
| median x < k = middle x + 1 + bsearch k (drop ((middle x)+1) x)
「bsearch k [] = -1」が悪いのはわかってるんだが、
うまく動くよう記述する方法がわかんない。
どうすればいい?
0685デフォルトの名無しさん
2006/05/01(月) 11:13:45bsearchの最後の等式で、再帰的に呼ばれたbsearchが-1を返したときにまずいことになる。
これを防ぐには、結果が-1かどうかを明示的にテストすればいい。
bsearch k [] = -1
bsearch k x
| median x > k = bsearch k (take (middle x) x)
| median x == k = middle x
| median x < k = case bsearch k (drop ((middle x)+1) x) of
-1 -> -1
r -> middle x + 1 + r
以下、本題とは関係ないけど、
・Haskellではbsearchのような「失敗する可能性のある」関数の結果はMaybeでラップするのが普通。
失敗時に-1を返すよりNothingを返した方が直感的だし、間違いも少ない。
・ceiling (fromIntegral (length x) / fromIntegral 2) は div (length x) 2と書ける。
0686デフォルトの名無しさん
2006/05/01(月) 11:15:390687685
2006/05/01(月) 11:18:02嘘でした。
div (length x + 1) 2
が正解。
0688デフォルトの名無しさん
2006/05/01(月) 11:20:56おお。素早い回答ありがとう。
0689デフォルトの名無しさん
2006/05/01(月) 12:46:11どのくらい簡単に書けるものなんですかね?
四則演算程度の簡単なパーサのサンプルとかありませんか?
0690デフォルトの名無しさん
2006/05/01(月) 13:38:36つttp://www.cs.uu.nl/~daan/download/parsec/parsec.html
0691デフォルトの名無しさん
2006/05/01(月) 16:07:44つ ttp://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tmp/Parsec.html
0692デフォルトの名無しさん
2006/05/01(月) 21:43:21このあたりとか
ttp://d.hatena.ne.jp/tanakh/20040730
ttp://d.hatena.ne.jp/tanakh/20040731
0693デフォルトの名無しさん
2006/05/01(月) 21:45:450694デフォルトの名無しさん
2006/05/01(月) 23:11:44『Haskell Boy』
映画化決定
0695デフォルトの名無しさん
2006/05/02(火) 09:53:00享年14歳
0696デフォルトの名無しさん
2006/05/02(火) 10:17:300697デフォルトの名無しさん
2006/05/02(火) 10:44:150698デフォルトの名無しさん
2006/05/02(火) 11:52:010699デフォルトの名無しさん
2006/05/02(火) 11:53:240700デフォルトの名無しさん
2006/05/02(火) 18:50:440701デフォルトの名無しさん
2006/05/02(火) 18:51:340702デフォルトの名無しさん
2006/05/02(火) 20:01:51でないとまともなアプリなんて作れません。
0703デフォルトの名無しさん
2006/05/02(火) 21:24:10WxHaskell。
でも、たぶん、Shift_JISをバイトごとに分けてCharに入れないとちゃんと動かない。
0704デフォルトの名無しさん
2006/05/02(火) 23:58:13quicksort [] = []
で空リストは空リストでマッチさせるのに対して
quicksort (x:xs) = ...
と空ではないリストについての表記が`('と`)'で囲まれてるのが
ペアみたいでいまいち納得いかないんですが、これは何でですか?
書いててふと思ったけど結合強度の関係でx:xsをグルーピングしてるだけとかいう落ち?
0705デフォルトの名無しさん
2006/05/03(水) 00:15:40そのとおり。
「宣言の左辺の時だけ結合度変えてよ」なんて無茶言ったらだめよ。
0706704
2006/05/03(水) 01:00:16普段はLISP使ってるので()[]{}を使い分けたりインデントを意識する習慣が
まったくないのですが、このあたりのつまらない約束事を乗り越えたら
新しい境地が広がっているといいなぁ。Haskell. OCamlとどっち勉強しようか
微妙に迷ったけど。
0707デフォルトの名無しさん
2006/05/03(水) 01:42:120708デフォルトの名無しさん
2006/05/03(水) 01:46:560709デフォルトの名無しさん
2006/05/03(水) 01:56:340710デフォルトの名無しさん
2006/05/03(水) 09:32:09違う意味で使えそう。
http://pc8.2ch.net/test/read.cgi/tech/1129792060/
0711デフォルトの名無しさん
2006/05/03(水) 21:20:33シンプルそうに見えて割と変な記号多いのは嫌だな、いつか治るのかな?
0712デフォルトの名無しさん
2006/05/03(水) 22:58:030713デフォルトの名無しさん
2006/05/03(水) 23:02:220714デフォルトの名無しさん
2006/05/03(水) 23:07:100715デフォルトの名無しさん
2006/05/03(水) 23:34:090716デフォルトの名無しさん
2006/05/03(水) 23:44:19いくらでもあると思うが。自明な例は、
data Id a = Id a
instance Monad Id where
return = undefined
(>>=) = undefined
もうちょっとまともな例は、ListT IO。
http://haskell.cs.yale.edu/hawiki/ListTDoneRight
0717デフォルトの名無しさん
2006/05/03(水) 23:47:23変な記号を駆使してやたらと簡潔なコードを書けるのがHaskellの良いところの一つだと思うので、なくなると困る。
0718デフォルトの名無しさん
2006/05/04(木) 00:05:11おお、ありがとうございます。リンク先の方、じっくり読んでみます。
0719デフォルトの名無しさん
2006/05/04(木) 00:23:04それってどこの Perl ?
0720デフォルトの名無しさん
2006/05/04(木) 00:47:340721デフォルトの名無しさん
2006/05/04(木) 20:59:020722デフォルトの名無しさん
2006/05/04(木) 23:31:45isSameNumber (x:xs) = all (==x) xs
0723デフォルトの名無しさん
2006/05/05(金) 00:54:370724721
2006/05/05(金) 01:57:05何はともあれ参考にします。
0725デフォルトの名無しさん
2006/05/05(金) 02:47:19Monad則を絶対に満たしてるという証明はどうやってするの?
0726デフォルトの名無しさん
2006/05/05(金) 11:22:59例えば、
return = Just
Just x >>= f = f x
Nothing >>= f = Nothing
と定義されているとき、 x >>= return = xを証明する。
x >>= return
= x >>= Just -- returnの定義から
= case x of -- (>>=)の定義から
Just r -> Just r
Nothing -> Nothing
= case x of -- パターンマッチの性質から
Just r -> x
Nothing -> x
= x -- case式の性質から
0727デフォルトの名無しさん
2006/05/05(金) 20:54:57詳しく。
0728デフォルトの名無しさん
2006/05/06(土) 00:38:38> = case x of -- パターンマッチの性質から
> Just r -> x
> Nothing -> x
これが思いつかなかった。
0729デフォルトの名無しさん
2006/05/06(土) 00:41:22こういう内容らしい。
ttp://i.loveruby.net/d/20060402.html
0730デフォルトの名無しさん
2006/05/06(土) 00:52:35Haskellで作ったバイナリは、ライセンスはどうなるでしょうか。
0731デフォルトの名無しさん
2006/05/06(土) 01:08:45それは処理系のライセンスによるでしょ。
0732デフォルトの名無しさん
2006/05/06(土) 02:34:13楽しみ。
0733デフォルトの名無しさん
2006/05/06(土) 08:04:42Haskellに限らず、コンパイラ系が吐き出した実行ファイルに
コンパイラの製作者側のライセンスが及ぶ場合ってあるのか?
0734デフォルトの名無しさん
2006/05/06(土) 08:13:04LGPLではなくGPLに汚染していたらそのプログラムもGPLにしないとまずい。
例えばCygwinのgccは問答無用でGPLなdllに依存してしまう。
0735デフォルトの名無しさん
2006/05/06(土) 08:31:06ライセンスってある? Cygwinのgccはdllに依存しないようなオプ
ションがなかったっけ?
具体的な質問に直すと(おれは730じゃないけど)Helloworldレベルの
EXEでGPLに感染しちゃうようなEXEしかはけない(他に選択肢の無い)
コンパイラあったら教えて。
0736デフォルトの名無しさん
2006/05/06(土) 08:37:110737デフォルトの名無しさん
2006/05/06(土) 08:47:12GNAT が確かそうだったような気がする >> 強制 GPL
0738デフォルトの名無しさん
2006/05/06(土) 11:59:420739デフォルトの名無しさん
2006/05/06(土) 15:42:270740デフォルトの名無しさん
2006/05/06(土) 16:00:270741デフォルトの名無しさん
2006/05/06(土) 16:26:53今月末
http://i.loveruby.net/d/20060502.html
0742デフォルトの名無しさん
2006/05/06(土) 16:36:18これってWindowsで問題にならないのか?
0743デフォルトの名無しさん
2006/05/07(日) 18:46:380744デフォルトの名無しさん
2006/05/07(日) 19:23:510745デフォルトの名無しさん
2006/05/07(日) 19:45:41GHCで使えないのはコンパイラの字句解析器とIOライブラリが日本語を解さないから。
字句解析器は6.6で改善されるはず。
HugsだとWindowsやLinuxでは日本語が普通に使えると思う。
0746デフォルトの名無しさん
2006/05/07(日) 22:41:50HEAD branch snapshotの
ghc-6.5.20060328-i386-unknown-mingw32.tar.gz
だと、UTF-8なら読み込めるが、6.4でOKだったeucが駄目になってる。
0747デフォルトの名無しさん
2006/05/09(火) 00:14:28取り掛かるのはやっぱり無謀ですか? 3. Parsingから途端について行けなくなったけど
リファレンスとか調べながら読んで行ってどうにかなるものかしら。
0748デフォルトの名無しさん
2006/05/09(火) 07:12:03手強かったら、一時撤退すればよい。
0749デフォルトの名無しさん
2006/05/09(火) 08:00:400750デフォルトの名無しさん
2006/05/09(火) 08:18:110751デフォルトの名無しさん
2006/05/09(火) 10:20:070752デフォルトの名無しさん
2006/05/09(火) 10:51:32強く型付けされた人生で幸福をあなたの元へ
0753デフォルトの名無しさん
2006/05/09(火) 11:03:330754デフォルトの名無しさん
2006/05/09(火) 13:00:21つ http://www.ruby-talk.org/cgi-bin/scat.rb/haskell/haskell-jp/403
iconv の FFI
0755デフォルトの名無しさん
2006/05/10(水) 04:20:020756デフォルトの名無しさん
2006/05/10(水) 07:49:430757デフォルトの名無しさん
2006/05/10(水) 21:33:19必要に応じてプロシージャを走らせます
0758デフォルトの名無しさん
2006/05/11(木) 09:53:540759デフォルトの名無しさん
2006/05/11(木) 09:58:530760デフォルトの名無しさん
2006/05/11(木) 14:02:220761デフォルトの名無しさん
2006/05/11(木) 20:49:010762デフォルトの名無しさん
2006/05/11(木) 20:53:520763デフォルトの名無しさん
2006/05/11(木) 21:03:08かなりの期待あげ。
0764デフォルトの名無しさん
2006/05/11(木) 21:30:490765デフォルトの名無しさん
2006/05/11(木) 21:32:020766デフォルトの名無しさん
2006/05/11(木) 21:32:590767デフォルトの名無しさん
2006/05/11(木) 23:04:00Cabal何とかエラーで動かなかった
0768デフォルトの名無しさん
2006/05/12(金) 01:15:51ノ 使ってる
0769デフォルトの名無しさん
2006/05/12(金) 04:35:08誤字、脱字は多いし説明は例を示さないで文章だけとかも結構あるし
読者の想定レベルもページめくるごとに変わってくる始末w
入門書でここまで酷いの久しぶりに見た
っと思ったら学生か しゃーないな
0770デフォルトの名無しさん
2006/05/12(金) 10:04:44まあ、確かに。
0771デフォルトの名無しさん
2006/05/12(金) 10:38:36それは青木さんの本では?
0772デフォルトの名無しさん
2006/05/12(金) 10:48:04>>770
青木さんが256本執筆したのは、まだ学生だった時のような希ガス。
クオリティ高杉で舌を巻いた。
0773デフォルトの名無しさん
2006/05/12(金) 10:56:06でねーよw
0774デフォルトの名無しさん
2006/05/12(金) 11:00:08そんなにクオリティの高い本だとは思わなかったけど・・
0775デフォルトの名無しさん
2006/05/12(金) 14:15:18http://www.cse.unsw.edu.au/~dons/yi.html
0776デフォルトの名無しさん
2006/05/12(金) 14:23:37sugeeeeeeeeee!!!
0777デフォルトの名無しさん
2006/05/12(金) 14:24:170778デフォルトの名無しさん
2006/05/12(金) 20:26:300779デフォルトの名無しさん
2006/05/13(土) 14:26:56http://i.loveruby.net/ja/stdhaskell/
5/31確定っぽい。
0780デフォルトの名無しさん
2006/05/13(土) 21:45:05入門Haskell買ったばかりなのに orz
0781デフォルトの名無しさん
2006/05/13(土) 22:15:01『むずかしいHaskellプログラミング』
『応用Haskell』
『演習Haskell』
0782デフォルトの名無しさん
2006/05/13(土) 22:17:31『もっとふしぎなHaskellプログラミング』
『ふかしぎなHaskellプログラミング』
0783デフォルトの名無しさん
2006/05/13(土) 22:42:49『Haskell Haskell Haskell』(通称トリプルエッチ)
0784デフォルトの名無しさん
2006/05/13(土) 22:54:040785デフォルトの名無しさん
2006/05/13(土) 23:19:52『Haskellを256倍使うための本』
『The Haskell Super Text (上)(下)』
0786デフォルトの名無しさん
2006/05/13(土) 23:22:420787デフォルトの名無しさん
2006/05/13(土) 23:29:520788デフォルトの名無しさん
2006/05/13(土) 23:34:290789デフォルトの名無しさん
2006/05/13(土) 23:35:440790デフォルトの名無しさん
2006/05/13(土) 23:40:280791デフォルトの名無しさん
2006/05/13(土) 23:52:460792デフォルトの名無しさん
2006/05/13(土) 23:54:320793デフォルトの名無しさん
2006/05/13(土) 23:55:320794デフォルトの名無しさん
2006/05/13(土) 23:56:490795デフォルトの名無しさん
2006/05/13(土) 23:58:360796デフォルトの名無しさん
2006/05/13(土) 23:59:470797デフォルトの名無しさん
2006/05/14(日) 00:00:290798デフォルトの名無しさん
2006/05/14(日) 00:15:510799デフォルトの名無しさん
2006/05/14(日) 01:03:500800デフォルトの名無しさん
2006/05/14(日) 01:37:230801デフォルトの名無しさん
2006/05/14(日) 01:37:280802デフォルトの名無しさん
2006/05/14(日) 01:52:28『あらいぐま Haskell』
0803デフォルトの名無しさん
2006/05/14(日) 02:02:32『世界の中心で Haskell と叫ぶ。』
0804デフォルトの名無しさん
2006/05/14(日) 02:25:350805デフォルトの名無しさん
2006/05/14(日) 02:28:220806デフォルトの名無しさん
2006/05/14(日) 07:38:38『軽快なHaskell』『Haskell魂』『マスタリングHaskell』
0807デフォルトの名無しさん
2006/05/14(日) 08:14:570808デフォルトの名無しさん
2006/05/14(日) 08:48:080809デフォルトの名無しさん
2006/05/14(日) 10:11:080810デフォルトの名無しさん
2006/05/14(日) 12:21:240811デフォルトの名無しさん
2006/05/14(日) 12:37:270812デフォルトの名無しさん
2006/05/14(日) 12:38:000813デフォルトの名無しさん
2006/05/14(日) 13:00:490814デフォルトの名無しさん
2006/05/14(日) 13:41:34・・・実験失敗?
0815デフォルトの名無しさん
2006/05/14(日) 17:09:110816デフォルトの名無しさん
2006/05/14(日) 17:17:31感動した。
0817デフォルトの名無しさん
2006/05/14(日) 20:51:150818デフォルトの名無しさん
2006/05/14(日) 23:04:130819デフォルトの名無しさん
2006/05/14(日) 23:20:340820デフォルトの名無しさん
2006/05/14(日) 23:23:060821デフォルトの名無しさん
2006/05/14(日) 23:24:020822デフォルトの名無しさん
2006/05/14(日) 23:50:33ttp://compsoc.dur.ac.uk/whitespace/index.php
0823デフォルトの名無しさん
2006/05/15(月) 00:27:480824デフォルトの名無しさん
2006/05/15(月) 00:50:23教えてください。
よろしくお願い致します。
0825デフォルトの名無しさん
2006/05/15(月) 00:52:43GHCかHugsを入れればいいんじゃないか?
0826デフォルトの名無しさん
2006/05/15(月) 03:04:36そんなことも分からないのに、Haskellをインストールしてもやることないんじゃないの?
何でインストールするの?
0827デフォルトの名無しさん
2006/05/15(月) 04:49:53オライリーktkr
0828デフォルトの名無しさん
2006/05/15(月) 06:30:480829デフォルトの名無しさん
2006/05/15(月) 20:04:030830デフォルトの名無しさん
2006/05/15(月) 20:11:320831デフォルトの名無しさん
2006/05/15(月) 20:14:49Haskellってツンデレっぽいよな
0832デフォルトの名無しさん
2006/05/15(月) 20:18:50通ったらかなりデレデレ
0833デフォルトの名無しさん
2006/05/15(月) 20:54:450834デフォルトの名無しさん
2006/05/15(月) 21:11:19これからすると一番忠実な表記はハスクルかな。
0835デフォルトの名無しさん
2006/05/16(火) 16:23:13「センターへのファウルフライ」
「高速なハスケル製アプリ」
0836デフォルトの名無しさん
2006/05/16(火) 18:21:13ghciで無限リストを表示したんですが、処理の中断の方法が分かりません。
どうすればいいですか?
0837デフォルトの名無しさん
2006/05/16(火) 18:32:48Ctrl+Cで止まらないか?
0838デフォルトの名無しさん
2006/05/16(火) 18:48:12すでに試しましたが、残念ながらとまりません。
0839デフォルトの名無しさん
2006/05/16(火) 18:52:340840デフォルトの名無しさん
2006/05/16(火) 19:05:48UNIX系のシェルから使ってるならghcii.shをghci.exeの代わりに使うと良いらしいが。
0841デフォルトの名無しさん
2006/05/16(火) 21:15:49WindowsのHugsって多バイト文字を扱えないんだな。知らなかった。
0842デフォルトの名無しさん
2006/05/16(火) 22:19:02ロンチック止まらなくなりますた!
0843デフォルトの名無しさん
2006/05/16(火) 22:40:48HGLが動かなくなりますた。(つД`)
WinHugs Beta3では動いてたのに。
0844デフォルトの名無しさん
2006/05/16(火) 22:53:58それで止まったのか?
0845デフォルトの名無しさん
2006/05/16(火) 23:14:31どんな無限リストなの?
0846デフォルトの名無しさん
2006/05/17(水) 00:40:260847デフォルトの名無しさん
2006/05/17(水) 01:04:590848Haskell初心者
2006/05/17(水) 02:40:33CabalとMakefileとbuild.shとSetup.lhsの関係がよくわからん。精進せねば。
darcsってのも始めて使った。Subversionみたいなもんかな。何かが違うんだろうけど。
0849デフォルトの名無しさん
2006/05/17(水) 05:45:00Linspire's OS team standardizes on Haskell
http://pugs.blogs.com/pugs/2006/05/linspire_os_tea.html
乱用され気味じゃね? と心配してみる
0850デフォルトの名無しさん
2006/05/17(水) 12:14:04Cabal しか知らんが。
http://www.haskell.org/cabal/
http://www.haskell.org/ghc/docs/latest/html/Cabal/builders.html
runhaskell Setup.hs configure
runhaskell Setup.hs build
runhaskell Setup.hs install
ちゃんと Cabal されていれば、これですべてよし。
ドキュメントも一読の価値はあるのでおすすめ。
0851デフォルトの名無しさん
2006/05/17(水) 16:55:45社内に関数プログラマが多く O'Caml を使ったりしてましたが、
O'Caml から Haskell に転向しましたってことだから、別にふつー。
最近の Haskell 人気を見ると O'Caml からの転向組は多そう。
0852デフォルトの名無しさん
2006/05/17(水) 21:19:020853デフォルトの名無しさん
2006/05/17(水) 21:26:25Linspire の話でした。
Linspire がO'Caml から Haskell に転向したって話。
0854デフォルトの名無しさん
2006/05/17(水) 21:59:110855デフォルトの名無しさん
2006/05/17(水) 22:39:300856848
2006/05/17(水) 23:14:44ども。runhaskell Setup.lhs configureでConfigがないよと怒られるのは
「ちゃんとCabalされていれば、」の前提が満たされてないのだろうと理解。
Gentooのportageで突っ込んでるだけなので問題点を解決できるまでには遠そうです。
Config.hsを欲しがってるらしいけど、どこから持ってくればよいものやら。
0857デフォルトの名無しさん
2006/05/19(金) 01:46:10two f x = f (f x)
three f x = f (f (f x))
dec n f x = n (g h->h (g f)) (_->x) (i->i)
sub a b = b dec a
と定義して、sub three twoを評価させると以下のエラー
Main> sub three two
ERROR - Type error in application
*** Expression : sub three two
*** Term : two
*** Type : ((a -> e -> g) -> a -> e -> g) -> (a -> e -> g) -> a -> e -> g
*** Does not match : ((((a -> b) -> (b -> c) -> c) -> (d -> e) -> (f -> f) -> g) -> a -> e -> g) -> (a -> e -> g) -> a -> e -> g
*** Because : unification would give infinite type
OCamlではこんな感じで対策してるけど、
http://ocaml.jp/archive/document/church.html
Haskellではどうすればいいんだろ?
0858デフォルトの名無しさん
2006/05/19(金) 03:03:39http://users.info.unicaen.fr/~karczma/Essays/church.html
0859858
2006/05/19(金) 03:23:04dec (Ch n) = Ch (\f x -> n (\ g h->h (g f)) (\ _->x) id)
でOK
Main> sh $ sub three two
1
0860デフォルトの名無しさん
2006/05/19(金) 04:18:25http://www.cbook24.com/bm_detail.asp?sku=4797336021
こっちでは6月1日発売になっております。
0861デフォルトの名無しさん
2006/05/19(金) 18:58:44配本が31日、発売が1日ということのようです。
もうすぐですね。
0862デフォルトの名無しさん
2006/05/19(金) 20:13:06ふつうのH
0863デフォルトの名無しさん
2006/05/19(金) 21:23:550864デフォルトの名無しさん
2006/05/19(金) 21:39:120865デフォルトの名無しさん
2006/05/20(土) 09:25:45新手の嫌がらせか?
0866デフォルトの名無しさん
2006/05/20(土) 12:18:120867デフォルトの名無しさん
2006/05/20(土) 12:57:490868デフォルトの名無しさん
2006/05/20(土) 13:21:460869デフォルトの名無しさん
2006/05/20(土) 22:53:180870デフォルトの名無しさん
2006/05/20(土) 23:16:390871sage
2006/05/20(土) 23:24:27私見レスだけど,
「純粋関数型」という小難しさがギークを自認する人々を惹き付けるのだと思う。
昔はC++がその役割を果たしていたのだけど(自分を含め踊らされた人の何と多い事か)。
# .NETやJavaがある今,わざわざMFCの為にC++を覚えようと言う人間も少ないし,
# C++の「正しい」コーディング法だとかも固まって来た感がある。
逆にOCaml本が出ないのは,call by valueなのである程度動きの予測がつくからかな?
実用性からいえばOCamlのほうが断然分があると思うのだけど。
0872871
2006/05/20(土) 23:25:340873デフォルトの名無しさん
2006/05/20(土) 23:29:06これからはsageさんと呼ばせてもらうよ
0874デフォルトの名無しさん
2006/05/20(土) 23:30:110875デフォルトの名無しさん
2006/05/21(日) 00:14:200876デフォルトの名無しさん
2006/05/21(日) 07:08:320877デフォルトの名無しさん
2006/05/21(日) 08:06:140878デフォルトの名無しさん
2006/05/21(日) 15:27:15># C++の「正しい」コーディング法だとかも固まって来た感がある。
個人的にはかなり異議あり.
0879デフォルトの名無しさん
2006/05/21(日) 15:30:53正しさというのも、私にとって正しい、あなたにとって正しくない、その程度の差なのではないでしょうか?
0880さげ
2006/05/21(日) 20:37:44正しい,というのは違ったかもしれない。
今更ながらC++のコーディング規約に関わる本が沢山出ているなあ,という実感から書きました。
あと>>876のレスに困惑。MFCはオブジェクト指向じゃないとかそういう話がしたいのだろか?
C++Builderの方がイイヨーとかWindows系以外にも目を向けろとかそういう話?まあいいか。
0881デフォルトの名無しさん
2006/05/21(日) 20:52:270882デフォルトの名無しさん
2006/05/21(日) 20:54:050883デフォルトの名無しさん
2006/05/21(日) 21:28:02わかれば、Haskellをマスターできる。
0884デフォルトの名無しさん
2006/05/21(日) 21:44:46λ......
λ.........
0885デフォルトの名無しさん
2006/05/21(日) 21:45:380886デフォルトの名無しさん
2006/05/21(日) 22:58:06.NETとJavaてw
0887デフォルトの名無しさん
2006/05/21(日) 23:14:120888デフォルトの名無しさん
2006/05/22(月) 01:53:22え?笑っているように見えた?
0889デフォルトの名無しさん
2006/05/22(月) 05:00:13ここで喧嘩するなよw
0890デフォルトの名無しさん
2006/05/22(月) 06:37:270891デフォルトの名無しさん
2006/05/22(月) 07:21:36安易に喧嘩認定し杉
0893デフォルトの名無しさん
2006/05/22(月) 09:12:32炊きつける奴もよくない
0894デフォルトの名無しさん
2006/05/22(月) 09:21:030895デフォルトの名無しさん
2006/05/22(月) 09:49:510896デフォルトの名無しさん
2006/05/22(月) 12:04:040897デフォルトの名無しさん
2006/05/22(月) 12:54:30でも>>871みたいに他言語使いの例があるなら分からないな
0898デフォルトの名無しさん
2006/05/22(月) 13:10:49無駄にトップクラスの大学挙げてくる辺りが学歴厨くさいな。
0899デフォルトの名無しさん
2006/05/22(月) 13:17:10ていうかチャイティンの本が面白いんでそうなった。
Haskellの勉強会に出てるのは、良く分からんけど、
学生とか変わった会社員とかと言う感じっぽいな。
0900デフォルトの名無しさん
2006/05/22(月) 13:57:41>東大京大て…一体どんな根拠があって
う〜ん,根拠かあ.webページとかICFPとか見てて浮かんだ憶測だけど,全くの当て推量ではないです.
あと学歴厨って言葉は久しぶりに聞いた.よくそんな言葉を恥ずかしげもなく吐けると思うよ.
そんなに気分が悪いの?怒ってるの?
0901デフォルトの名無しさん
2006/05/22(月) 14:20:070902デフォルトの名無しさん
2006/05/22(月) 14:41:59もっと大人になった方がいいんじゃないかな.
0903デフォルトの名無しさん
2006/05/22(月) 15:11:300904デフォルトの名無しさん
2006/05/22(月) 15:17:100905デフォルトの名無しさん
2006/05/22(月) 15:23:39みんな,ごめん.
0906デフォルトの名無しさん
2006/05/22(月) 16:25:30お前いい奴だな。
0907デフォルトの名無しさん
2006/05/22(月) 17:34:230908デフォルトの名無しさん
2006/05/22(月) 18:12:55どこが面白いのかわからない…
0909デフォルトの名無しさん
2006/05/22(月) 18:48:59何とか見ないように我慢してるけど。
0910デフォルトの名無しさん
2006/05/23(火) 03:05:160911デフォルトの名無しさん
2006/05/23(火) 04:19:480912デフォルトの名無しさん
2006/05/23(火) 07:42:150913デフォルトの名無しさん
2006/05/23(火) 08:14:500914デフォルトの名無しさん
2006/05/23(火) 16:12:47無限ストリームを使うよりもStateモナドを使った方がHaskellらしいのでしょうか?
教えて下さい。
0915デフォルトの名無しさん
2006/05/23(火) 16:35:05例えばどんなコード?
0916デフォルトの名無しさん
2006/05/23(火) 16:39:04全てのVMの状態がならんだストリームを作って、ある状態のVMを返すってなコードを作ってました。
0917デフォルトの名無しさん
2006/05/23(火) 17:10:38Stateモナドやストリームを使っても特に嬉しくないんじゃないか?
そういう場合は、
nextState :: Code -> RegisterState -> RegisterState
みたいな状態更新関数を作るのが自然なような気がする。
役に立たない回答ですまん。
0918デフォルトの名無しさん
2006/05/23(火) 17:13:01そう言ってくれる人がいることが羨ましい。
0919デフォルトの名無しさん
2006/05/23(火) 19:11:20その辺は好みじゃないかなぁ。
具体的なものを見てみないとわからないけど。
あえて言うなら、将来他のモナドと組み合せて使うならモナドで書いておいた方が良いかもしれない。
0920デフォルトの名無しさん
2006/05/23(火) 19:12:29なんで?「レジスタの値以外に内部状態を持たないなら」という前提がよくわからない。
どちらにせよStateモナドはかなり嬉しいと思う。
nextState :: Code -> RegisterState -> RegisterState
... let new = nextState code old in ...
と書くより,
nextState :: Code -> State RegisterState ()
として,
... do
nextState code
とやったほうが明示的に状態を持って回らなくて楽じゃん。
All About MonadsのState Monadの「動機」が分かりやすい:
ttp://www.sampou.org/haskell/a-a-monads/html/statemonad.html#motivation
むしろ自分としては
> 全てのVMの状態がならんだストリームを作って、ある状態のVMを返すってなコード
こっちの書き方が気になる。コード貼って欲しいです。
0921デフォルトの名無しさん
2006/05/23(火) 19:18:58これ読んで思ったのだけど,例えばStateなら,
nextState :: (MonadState RegisterState m) => Code -> m ()
みたいに,より一般的に定義するって手があるよね
これなら
nextState :: Code -> State RegisterState ()
nextState :: (Monad m) => Code -> StateT RegisterState m ()
この両方の型が付けられる (←表現あってる?)。
ただ,読みにくくなる(と僕は思う)し,ムキになって一般化するよりも,
使いどころは考えないとな,というのがプログラマの印象。
0922デフォルトの名無しさん
2006/05/23(火) 19:21:49http://www.haskell.org/ghc/docs/latest/html/libraries/mtl/Control-Monad-State.html
こっちみてください。でも既にfundepsとか使ってあって,ちょっとわかりにくいか…
0923デフォルトの名無しさん
2006/05/23(火) 20:03:15>「レジスタの値以外に内部状態を持たないなら」という前提がよくわからない。
ごめん。余り意味のない前提だったから忘れてくれ。
>どちらにせよStateモナドはかなり嬉しいと思う。
>(...)
>とやったほうが明示的に状態を持って回らなくて楽じゃん。
それが嬉しいのはRegisterStateを変化させるコードがnextStateの他にあって、そこから
nextStateを呼び出したい場合だけじゃないか?
nextStateはレジスタの状態を1クロック進めるVMの本体であって、
他にレジスタをいじるコードはほとんどないと仮定したんだがどうだろうか。
仮にnextStateをStateモナドから呼び出したいことがあったとしても、
monadicNextState :: Code -> State RegisterState ()
monadicNextState code = modify (nextState code)
みたいに定義しておけばいいので、nextState自体をStateモナドで書く理由にはならないと思う。
…しかし、nextStateの実装にStateモナドを使って嬉しいことは普通にあるような気がしてきた。
複数のレジスタ操作アクションを組み合わせてnextStateを書く場合とか。
0924デフォルトの名無しさん
2006/05/23(火) 20:59:10nextStateを使う側がどんな風に呼び出しているか,って事でそ?
Code -> State RegisterState () も Code -> RegisterState -> RegisterStateも同型な訳で,
どっちでも使いやすいほうでいい.>>923でも良いし,それはここでは別問題な気がする.
ここでは「VMを作るけど実装のうえで状態の扱いをどうするか?」という質問なので
「それならStateモナドがいいんじゃね?」という答えはストレートで合ってると思う.
処理の全体を表す関数がどんな型を持っているかは,わりとどうでもいいと思う.なんでもいいけど
0925デフォルトの名無しさん
2006/05/23(火) 21:05:510926デフォルトの名無しさん
2006/05/23(火) 21:27:39これには同意するけど、nextStateはいま問題になっている「処理の全体を表す関数」じゃない。
>>914は「処理の全体を表す関数」をストリームで書くかStateモナドで書くかという問題を提起していて、
それに対して>>917で、nextStateを用意して、それを使って「処理の全体を表す関数」を書いたらいいんじゃないか、と提案した。
この方針が採用されたとして、nextStateの実装にStateモナドを使うかどうかは、また別の話だろ。
0927デフォルトの名無しさん
2006/05/23(火) 21:58:090928デフォルトの名無しさん
2006/05/23(火) 23:02:50その「別の話」が聞きたかったんじゃないのか.
だからStateモナドを使えば状態の管理が楽なんだよ,と答えたんじゃないの
というか処理の全体って何だよ
nextStateだか何だか知らないけど,おまいらどういう文脈を仮定しているのかと
0929デフォルトの名無しさん
2006/05/23(火) 23:06:13私が疑問に思ったのは以下のようなことです.
スタックやレジスタを持つVMがいくつかの関数から参照されているとき,
そのVMの中のレジスタだけを変化させて他の関数にその変化を反映させた
い時,Haskellではそれをどのように解決するのかが疑問に思いました。
これはStateモナドを使えば可能ということでしょうか?
Haskellで代入のような状態変化を表現するのに私は無限ストリームを使う方法しか知らなく,他にもっと良い方法があるのか疑問に思ったので質問しました.
無限ストリームを使って上記のようなことをできるのであればその方法も教えて頂きたいです.
0930デフォルトの名無しさん
2006/05/23(火) 23:07:30data VM = VM Stack RegisterTable
runVM :: VM -> Codes -> VM
runVM vm codes = selectUnChangedVM $ generateAllVM vm codes
where
selectUnChangedVM :: [VM] -> VM
selectUnChangedVM (vm1:vm2:vms)
| vm1 == vm2 = vm1
| otherwise = selectUnChangedVM (vm2:vms)
generateAllVM :: VM -> Codes -> [VM]
generateAllVM vm codes = iterate (execOne codes) vm
execOne :: Codes -> VM -> VM
execOne codes vm = newvm
where
code = selectCode vm codes
newvm = execCode code vm
やっていることは以下の通りです.
(1) 1クロックごとのVMの状態を持つ無限ストリームを生成
(2) その中で次のクロックに移っても状態が変わっていないVMを見付けてそのVMを返す
0931デフォルトの名無しさん
2006/05/23(火) 23:09:220932デフォルトの名無しさん
2006/05/23(火) 23:13:35止まる,というのを,「VMの状態が変化しないこと」としているのは,どうなんだろう。
普通はhalt命令とか入れるんでわ
0933デフォルトの名無しさん
2006/05/23(火) 23:15:300934デフォルトの名無しさん
2006/05/23(火) 23:35:11updateR1 :: Int -> State RegisterTable ()
updateR1 v = do
old <- get
put (old {r1=v})
jump addr = do
old <- get
put (old {pc=addr})
めんどくさくなってきた…かなり反復気味のコードねコレ。良策求む。
ところでこのまま行って State VM a の a は () 以外に何かありえるのかな?
全部状態更新しかしない (State VM Bool などを使わない) ならState使う意味がない気がする
0935デフォルトの名無しさん
2006/05/24(水) 00:20:52俺はそのままで問題ないと思う。execCodeの処理が複雑なら
そこだけ>>934みたいにStateモナドを使って実装してもいいかも知れないが。
それはごく普通のストリームの使いかただから、
これが分かり辛いと言う奴はHaskellに慣れてないだけなんじゃないだろうか。
0936デフォルトの名無しさん
2006/05/24(水) 00:36:13実際>>930のコード読むまで私は質問者がどう実装したのか分からなかった。
あと,モナドなら>>933が言っているように(?)、
将来VMから環境に副作用を及ぼす(ファイル入出力やコンソール出力など)ように拡張したい場合、
StateTとIOと合成すれば一発、とかちょっとエレガントじゃなかろうか。やってないので分からんけど
0937デフォルトの名無しさん
2006/05/24(水) 00:53:32アセンブラの演習とかで,終了を
halt:
jmp halt
みたいに書くのはよくある。
Stateモナドは状態の履歴を持たないから、この場合に無限ストリームを使うのは結構賢いかも
0938デフォルトの名無しさん
2006/05/24(水) 01:29:59newtype MonadStream m a = MS (m (a, MonadStream m a))
type Stream = MonadSteram Identity
type IOStream = MonadStream IO
0939デフォルトの名無しさん
2006/05/24(水) 07:33:04モナドがない頃は、無限ストリーム専門だったよ…
0940デフォルトの名無しさん
2006/05/25(木) 00:37:27∩`iWi´∩ λ,,,,λ グオー!
ヽ |m| .ノ∩`iWi´∩
|  ̄| ヽ |m| .ノ
| | | |
U⌒U U⌒U
0941デフォルトの名無しさん
2006/05/28(日) 21:47:4950本から100本くらいのソケットを効率良く処理したいから、
UNIXのselectシステムコールみたいな操作使って、
多重化したI/Oを準備OKなやつを片っ端からてきぱきさばきたいんだけど、
そういう処理って書けて効率良く実行できるのかな?
あと、XMLも扱いたいけどライブラリはどれくらいあるの?
さらに、通信部分とは別のところで、ユーザといろいろインタラクション
するためのスレッドをたくさん動かして、スレッド間で複雑に相互作用が
あるんだけど、そういった処理も書きやすいのかな?
0942デフォルトの名無しさん
2006/05/28(日) 21:52:47Fedora Core 5のextrasリポジトリに
ghc-gtk2hs-0.9.10-1.fc5.i386.rpmってのがあって、
GTK+のHaskellバインディングみたいだけど、これって使いものになる?
関数型のプログラミングスタイルとずれるところはあるの?
0943デフォルトの名無しさん
2006/05/28(日) 22:47:420944デフォルトの名無しさん
2006/05/28(日) 23:00:28なったけど、単なる計算じゃなくて、もっと実践的な仕事まで視野に入れると
どれくらい使いものになる言語なんだろうって知りたい。
実践っていっても、今仕事で書いてるようなプログラムをHaskellでも
書けるかって観点で最低限を書き出したら>>941-942みたいになったよ。
0945デフォルトの名無しさん
2006/05/28(日) 23:13:200946デフォルトの名無しさん
2006/05/28(日) 23:35:220947デフォルトの名無しさん
2006/05/28(日) 23:42:13>Haskell面白そうなんだけど、サーバプログラム書けるのかな?
書けると思われ。
>そういう処理って書けて効率良く実行できるのかな?
ちょっと探してみたけどselectはなさそうだった。
必要ならシステムコールを呼べばいい。効率はしらね。
どっちかというとfdの数だけ(ユーザレベルの)スレッドを用意するのが推奨されてるような気もする。
>あと、XMLも扱いたいけどライブラリはどれくらいあるの?
有名なのは2つかな。
>あるんだけど、そういった処理も書きやすいのかな?
書きやすいと思う。
>そうそう、Haskel用のGUIは何がお勧めかな?Linuxで動けばいいよ。
Gtk2HsとWxHaskellの二択だろう。ちゃんと使った訳じゃないので評価はパス。
>関数型のプログラミングスタイルとずれるところはあるの?
微妙。少なくとも宣言的なGUIプログラミングができる訳ではない。
0948デフォルトの名無しさん
2006/05/28(日) 23:49:06どっちもちがうよ。詳しくは言えない。
>>947
おぉおぉ!ありがとうっす。そこそこ実践的にも使えるんだね。
ユーザレベルのスレッドってコルーチンみたいなやつかな?
wxHaskellなんてもんもあるんだ。そりゃいい!
wxWidgetsはwxPython通して使ったことあるけど、
LinuxでもWindowsでも多少の変更で対応できるのがいいよね。
0949デフォルトの名無しさん
2006/05/29(月) 00:57:36というのを英語で読んだ気がする 本家MLかなあ
0950デフォルトの名無しさん
2006/05/29(月) 11:30:12あとスピードも保障できないってことで。その代わりにたくさんメリットがあるわけだし。
0951デフォルトの名無しさん
2006/05/31(水) 15:17:050952デフォルトの名無しさん
2006/05/31(水) 15:19:460953デフォルトの名無しさん
2006/05/31(水) 17:12:410954デフォルトの名無しさん
2006/05/31(水) 17:14:030955デフォルトの名無しさん
2006/05/31(水) 18:09:390956デフォルトの名無しさん
2006/05/31(水) 18:39:39騙したな!
0957デフォルトの名無しさん
2006/05/31(水) 20:00:58誰が上手い事を言えと
0958デフォルトの名無しさん
2006/06/01(木) 00:04:31同志!!
俺は、近所の本屋、2、3軒のぞきに行っちゃったぜ。
0959956
2006/06/01(木) 03:41:24ごめん…実はアマゾンで調べたら明日って事になってたから
実は本屋に行かなかったんだ…
0960デフォルトの名無しさん
2006/06/01(木) 10:42:120961デフォルトの名無しさん
2006/06/01(木) 18:20:190962デフォルトの名無しさん
2006/06/01(木) 18:25:220963デフォルトの名無しさん
2006/06/01(木) 18:31:470964デフォルトの名無しさん
2006/06/01(木) 20:44:29わざと一般的な書き方しなかったのかな
0965デフォルトの名無しさん
2006/06/02(金) 03:04:27>>684
Haskellのリストで二分検索ってできるの?
二分検索というからにはO(logN)じゃないと意味がないと思うんだが、
lengthだの!!だの使っている時点でO(N)を越えている気がしてならない。
0966デフォルトの名無しさん
2006/06/02(金) 03:14:12Haskell なら最初から二分木作った方がいいと思われ。
0967デフォルトの名無しさん
2006/06/02(金) 17:47:57かなり分かりやすそうです。
0968デフォルトの名無しさん
2006/06/02(金) 17:48:37>>951
0969デフォルトの名無しさん
2006/06/02(金) 17:56:33「入門Haskell」売れまくりだな!!
0970デフォルトの名無しさん
2006/06/02(金) 18:25:22ふつうのHaskellプログラミングの方がまだまし。
0971デフォルトの名無しさん
2006/06/02(金) 19:24:220972デフォルトの名無しさん
2006/06/02(金) 19:29:330973デフォルトの名無しさん
2006/06/02(金) 21:14:24例に沿っていくうちに、極めて自然に構文や標準関数を導入している。
ただ、どっちかというと言語とライブラリの解説が主で、自分でコードを書くための
訓練には余り重点が置かれていないようだ。
しかし、IOモナドの説明がうんこ(世界を持ち出す)なのと、評価と実行を混同してるのは
わざとなんだろうか。特に後者は方便の域を越えると思う。最後まで訂正されないし。
0974デフォルトの名無しさん
2006/06/02(金) 21:26:19ふつうのLinuxまで読みたくなった。
(これだと某有機氏の本は不要かもって思った。)
0975デフォルトの名無しさん
2006/06/02(金) 22:02:450976デフォルトの名無しさん
2006/06/02(金) 22:04:400977デフォルトの名無しさん
2006/06/02(金) 22:14:24適切だと思ったから使ったんだよ。悪いかよ。
勝手に脳内変換して読んでろハゲ。
0978デフォルトの名無しさん
2006/06/02(金) 22:21:310979デフォルトの名無しさん
2006/06/02(金) 22:23:230980デフォルトの名無しさん
2006/06/02(金) 22:25:100981デフォルトの名無しさん
2006/06/02(金) 22:30:520982デフォルトの名無しさん
2006/06/02(金) 23:32:390983デフォルトの名無しさん
2006/06/02(金) 23:38:31入門者以外なら論文読むと良いよ。
0984デフォルトの名無しさん
2006/06/02(金) 23:39:06日本どころか世界中でもほとんどいない。
0985デフォルトの名無しさん
2006/06/02(金) 23:39:570986デフォルトの名無しさん
2006/06/02(金) 23:42:58ダブルSimonは例外
0987デフォルトの名無しさん
2006/06/02(金) 23:44:38本当は理解できてないと正直に言いなさい。
0988デフォルトの名無しさん
2006/06/02(金) 23:50:440989デフォルトの名無しさん
2006/06/03(土) 00:15:08知らないうちに、うんこ、うんこが口癖になるからな。
0990デフォルトの名無しさん
2006/06/03(土) 00:20:560991デフォルトの名無しさん
2006/06/03(土) 00:36:22そんな難しいか?
0992デフォルトの名無しさん
2006/06/03(土) 00:45:300993デフォルトの名無しさん
2006/06/03(土) 00:49:530994デフォルトの名無しさん
2006/06/03(土) 00:55:080995デフォルトの名無しさん
2006/06/03(土) 00:58:06http://pc8.2ch.net/test/read.cgi/tech/1149263630/
0996デフォルトの名無しさん
2006/06/03(土) 01:00:58乙うんこ
0997デフォルトの名無しさん
2006/06/03(土) 01:11:010998デフォルトの名無しさん
2006/06/03(土) 01:13:180999デフォルトの名無しさん
2006/06/03(土) 01:13:521000デフォルトの名無しさん
2006/06/03(土) 01:15:0810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。