- 1 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 01:34:05 ]
- C/C++>>>>(越えられない壁)>>>Haskell
- 132 名前:デフォルトの名無しさん [2006/04/23(日) 14:00:21 ]
- 芸人が腰を振りながら変なポーズで叫ぶ新手のネタか何かと思ってたよ。
テレビ見ている人は、その状況が勝手に脳内補完されるから面白い(流行っている)のかな、と。 まあ、俺はテレビ見ないからな。
- 133 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 19:59:53 ]
- あなたの生活なんてだれも聞いてません。
- 134 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 20:03:08 ]
- >>132
最近の芸人はどれもコンセプトは一緒でつまらん。 ちょうど、他人のレポートを写して書き方をちょこっと変えて提出する学生と同じ。
- 135 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 01:30:25 ]
- >>134
芸人はバラエティー番組の部品だから。 usefulな部品が同じようなインターフェイスを持つようなもの。
- 136 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 01:56:51 ]
- >>135
そういう環境に最適化しちゃったやつは環境の変化になかなかついてこれないから淘汰されるよ。ついてこれるのは変化に対応できたやつだけ。
- 137 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 09:44:05 ]
- テレビ屋も視聴者も
今の芸人に移植性なんて期待してないんだよ
- 138 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 15:33:39 ]
- それ違う
- 139 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 22:00:52 ]
- >はすけらーって延々と議論ばかりやってて一向に動くものを作らなさそう。
>現場で役に立たないタイプの典型。 会社入れば、こういうことを仰る輩の実力が痛い程味わえますね。
- 140 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 15:03:44 ]
- >>134
>最近の芸人はどれもコンセプトは一緒でつまらん。 ああ、>>134 も成長したんだな。良かった良かった。 あと一つ教えてやる事があるとすると、 何もそれは「最近」に限ったことではない。 昔から同じ。 単に >>134 が昔の芸人を知らなかっただけ。
- 141 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:58:44 ]
- 芸人はどうでもいいよ
- 142 名前:デフォルトの名無しさん [2006/04/30(日) 17:11:43 ]
- 質問です。
Haskellと芸人のつながりを教えてください。
- 143 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 17:13:48 ]
- だからどうでもいいっていってんだろ。
- 144 名前:デフォルトの名無しさん [2006/04/30(日) 17:19:26 ]
- >>143
あなたは私ですか? 私が気にしているのに、なぜどうでもいいという答えが出てくるんですか。 まじめに考えなさい。
- 145 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 17:23:08 ]
- 黙れ小僧!それが人にものを訊ねる態度か!
- 146 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 20:50:43 ]
- 数学的だと美しいの?主観の問題じゃ?
- 147 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:09:13 ]
- ククク…混沌こそが美しい
- 148 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:20:32 ]
- >>146
数学的つーより、定義を書き下すスタイルが美しいと思う。
- 149 名前:デフォルトの名無しさん [2006/04/30(日) 21:20:51 ]
- >>146
時よとまれ!お前は美しい!
- 150 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:22:49 ]
- シンプルな計算モデルに基づいてすべてを記述できるのが美しい
- 151 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:23:27 ]
- 美しいの計算モデルなのさ!!!
- 152 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:43:08 ]
- 妖星は二度と輝かぬ!
- 153 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:55:15 ]
- わが生涯に一片の副作用なし!
- 154 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:02:19 ]
- 観察可能な副作用のない人生のなんと矮小なことか。
- 155 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:47:58 ]
- 無駄がないのが美しく感じる。
- 156 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:15:42 ]
- 表面上は副作用無いけど、
ぶっちゃけ実質的には副作用ある。
- 157 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:24:21 ]
- 実質的にはあるものを、表面上は無いように見せかけようとしてきたのが
プログラミング言語の歴史だ。
- 158 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:27:52 ]
- >>157
そのコピペのソースはどこ?
- 159 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:55:23 ]
- 副作用に実質も糞もないだろ。
副作用って言葉自体が言語レベルの(表面上の)概念なんだから。
- 160 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 00:04:13 ]
- haskellに副作用はありません。
副作用があるとかなんとか、馬鹿が鳴いてるだけですから無視してください。
- 161 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 02:20:35 ]
- 確かに main の返す値は常に等しいが・・・。
- 162 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 16:21:26 ]
- 宣言的プログラミングってやつとは全然違う?近い?
- 163 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 18:01:17 ]
- 違います
- 164 名前:デフォルトの名無しさん [2006/06/02(金) 19:25:52 ]
- 諸君、議論したまえ。
- 165 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 21:16:53 ]
- >>64か?
そろそろ勉強始めろよ。和書も出たんだし。
- 166 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 18:55:27 ]
- Haskellって、アルゴリズムを書くには便利そうだけど、
それだけで完結するようなプログラムもありえないので、 ビジネスロジックだけをこれで書いて、ほかの言語から 呼び出せってモノなんでしょ? もっといえば、ストアドみたいな。
- 167 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:43:52 ]
- >>166
そういう使いかたもあるけど、そのための言語と言う訳ではない。 宣伝文句は「general purpose programming language」だし、 ライブラリの整備もかなりの部分は「全部Haskellで書く」方向に向かっている。 そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ?
- 168 名前:167 mailto:sage [2006/06/03(土) 19:46:36 ]
- 自己レス
>そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ? いや、実際不便なんだが、それは主にライブラリの不備のせいであって、 言語がそっちを指向してる訳じゃないと思うがどうよ。
- 169 名前:デフォルトの名無しさん [2006/06/03(土) 20:44:04 ]
- >>165
はーい^^
- 170 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 00:48:32 ]
- >168
簡単な解説ページしかみてないので今ひとつ自信はないんだけど、 I/O関係でムリを通そうとしてる雰囲気がほのかに・・・。 そんなんだったら、ほかの言語から呼び出すのにとどめたほうが、 みんな幸せになれそう。 正規表現を拡張して独立したプログラム言語にしようとしてるような、 ミョーな意固地さを感じる・・・。
- 171 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:59:34 ]
- Haskell.NETで何とかならんかな、その辺は。
- 172 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 02:13:40 ]
- Haskell.NETは間違いなくベーパーウェアのまま終わる
- 173 名前:デフォルトの名無しさん [2006/06/04(日) 16:13:06 ]
- C++のメソッドに対するconstってあるでしょ。
あれは、オブジェクトの状態を変えないって意味がある(実際はちょっと違うけど) SICPにもあるけど、副作用や参照のせいで出てくるバグ(side-effect bug)も、 結構無視できない。 私の場合だけど、 副作用がある部分と、副作用が無い部分を切り分けられないかと思い 様々な言語を探していたらHaskellとかCleanとか(*)に突き当たった。 そのように見れば、IOモナドで副作用を切り分けるのもそんなに違和感が無いんじゃないかな。 (*)研究用の(実用的でない)言語なら他にもあるみたい。 computing-dictionary.thefreedictionary.com/Euclid
- 174 名前:デフォルトの名無しさん [2006/06/04(日) 18:11:25 ]
- はやくおまいら実用的なライブラリこさえてください。
- 175 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 18:47:20 ]
- GHCはOpenGL+GLUTがついてるぜ
サンプルコードぐぐってやる気なくしたけど
- 176 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 20:12:00 ]
- >>170
たぶんIOモナドの事を言ってるんだと思うが、IOをモナドで表すのは どっちかというと言語の詳細であって、それほどプログラミングのスタイルが 影響を受ける訳じゃない。 たとえ内部が正規表現で出来ていようと、その上で普通にコードがかけるなら 問題ないんじゃないだろうか。 という訳で、別に無理をしていても良いと思うんだが、個人的には HaskellのIOがすごく無理をしているようには感じられない。うまく言えないけど。
- 177 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 20:26:01 ]
- しかし、純粋関数的に書いていたコードに副作用を加えたい場合、
let x = ...を x <- ... に書き換えたり、 戻り型を a から IO a や State s a に書き換えなければならない事を思うと、 Haskellで書いたプログラムのモジュール性が低いと言えなくもない。 ただ、元々副作用無しで書こうと思っていたコードに、 副作用を加えるというのは、そもそも設計段階で間違っていたとも言える。 ここで言う副作用の例は、性能評価コードや、ロギング等のための、 呼び出しカウント、ファイル出力などを考えている。 でもこういうのは他の代替可能な手段があるかもしれない。 始めからIdモナドで書けばいい、と言ってしまえばそれまでだけど。 この辺の議論ってどっかに書いてないかな。
- 178 名前:デフォルトの名無しさん [2006/06/12(月) 06:41:11 ]
- 諸君、さらに議論を続けたまえ。
- 179 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 07:32:33 ]
- そうやって話の腰を揉むのはよせ
- 180 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 07:56:57 ]
- 俺のおっぱい揉んでよ。
- 181 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 07:59:16 ]
- 氏ねデブ
- 182 名前:デフォルトの名無しさん [2006/06/12(月) 11:30:40 ]
- 議論を再会したまえ。
- 183 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 19:07:16 ]
- お前ら面白すぎ
- 184 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 14:00:58 ]
- べつに面白くはないでしょ
- 185 名前:デフォルトの名無しさん [2006/06/14(水) 21:56:33 ]
- 議論を展開したまえ。
- 186 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 22:47:18 ]
- おっぱいもまれたい男はデブかどうか。
ピザには間違いない。
- 187 名前:デフォルトの名無しさん [2006/06/17(土) 07:48:34 ]
- その議論は終了したまえ。
- 188 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 09:40:35 ]
- 学者様は議論の開始・展開・終了がノンコストで行われると考えてるらしい。
実際の開発では、プログラムの開始・展開・終了の間で 作業者間でのコミュニケーションが行われ、そこのコストがもっとも大きいというのに。
- 189 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 13:19:08 ]
- じゃあトップが一人で全部設計してあとはコーディングだけすれば
ノンコストだろ。コミュニケーションにコストがかかるとか言ってる >>188方がDQNだろ
- 190 名前:デフォルトの名無しさん [2006/06/17(土) 14:25:09 ]
- >>187
したまえ
- 191 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 20:41:33 ]
- >>189
俺にはこのボケに対するうまいツッコミが思いつかない
- 192 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 09:54:29 ]
- 今北んだが、何でコミュニケーションのコストの話になったんだ?
誰が学者様なんだ? コミュニケーションにコストがかかるのは承知だが、 なんでそれをHaskellのスレで議論する必要が? もっとテクニカルな話しようや
- 193 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 10:01:35 ]
- 俺はテクニックの話はどうでもいい。
研究的内容について議論してくれ。
- 194 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 11:58:33 ]
- 研究的内容って?何を求めているの?
- 195 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 15:41:09 ]
- >>194
「新規性」だよ
- 196 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 23:12:56 ]
- このスレで?w
んな高尚なもの求められても。。そういうのは大学のお友達とたっぷり議論するといいよ。
- 197 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 23:15:25 ]
- 第一こんな所に降りてくるネタなんぞに新規なものなど存在しない。
何かHaskellの新しい機能を触ろう、ってんならagreeだが。
- 198 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 17:24:47 ]
- arrowってモナドと何が違うの?
- 199 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 17:34:25 ]
- やっとアローズまでたどり着いたか。遅かったね。
- 200 名前:デフォルトの名無しさん [2006/06/19(月) 23:18:19 ]
- 頭の回転の速さよりもセレンディピティの方が重要だと思う。
- 201 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 01:36:11 ]
- クソスレでまじめな議論に飢える情報弱者www
- 202 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 06:15:11 ]
- 新しいものとか、テクニカルなもの、セレンディピティはおおいに結構。
Haskellの超絶技巧なテクニックだとか、こんなアプリをHaskellで書いた!とか、 こんな新しいプログラムの書き方がある!とか そういう内容でいいんじゃないの
- 203 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 00:00:10 ]
- >>202
お前このスレ立てただろ。文体からすぐわかんだよ。 自分ひとり選民意識でいるんじゃねぇよ。 ↓↓↓ プログラム板から来ました pc8.2ch.net/test/read.cgi/php/1150778053/
- 204 名前:デフォルトの名無しさん [2006/06/24(土) 15:40:43 ]
- 議論をレジュームしたまえ。
- 205 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 21:48:43 ]
- Haskell使える人ってこれからどんどん増えて行くというのに、選民もクソもないでしょ。
- 206 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 01:51:37 ]
- Haskellは流行りません。研究者の一人として断言します。
- 207 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 02:26:49 ]
- >>206
理由をぜひ聞きたかったりするんだが…。 これから勉強しようかと思ってるけど、ひょっとして無駄?
- 208 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 06:23:53 ]
- >>207
自分の「ものの考え方」のバリエーションが広がるだけでも 全く無駄ではないよ
- 209 名前:207 mailto:sage [2006/06/28(水) 08:35:59 ]
- >>208
あっ、いや、ある程度はもう知ってるのだけど、 Haskellは実用的にも使えるのではないかと思って 標準的な関数の使い方を全て勉強しようかという 矢先に >>206 を見たので…。
- 210 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 17:52:27 ]
- Haskell は面白いけど、あんまり実用的ではないように見えるなあ。
それほど効率が求められないものや、 あるいはそれほど効率に影響のないプログラムなら問題ないけど、 効率上、副作用は必要悪だと思うなあ。
- 211 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 18:10:21 ]
- Haskellが遅いのは遅延評価のせいであって、副作用は関係ないだろ。
- 212 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:24:57 ]
- 別に商用になるかどうかと流行るかどうかは関係ないでしょ。
書籍も出たことだし、Smalltalkやlisp/schemeに迫る程度には「流行る」かと。 あまり理由も示さずに間抜けな断言をするのは研究者としてどうなんだろう。 あと、副作用があれば参照が使えるので例えば再帰の代わりにforループが書ける。 Cみたいなクイックソートが書ける。副作用は、Haskell自体の遅さというより、 効率的なプログラムが書けるかどうかに掛かってくる、ということを>>210は言いたかったんでは。
- 213 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:33:02 ]
- 「Haskellは流行りません」って、Haskellを知らずに言ってるならただの馬鹿だし、
Haskellの利点を踏まえた上でそんなことを軽々しく断言されても…ちょっとアレな人な気がする どこの馬の骨ともわからん(プログラミング言語の?)研究者が何と言おうと、流行るもんは流行るし。
- 214 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:55:56 ]
- 俺も馬の骨だが、Haskell は一般向けには流行らないと思うなぁ。
そもそも流行っている事が最も重要な人は使っていないんじゃないかな。
- 215 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 00:12:06 ]
- 流行らないと「思う」には同意。ただ断言できるほど物を知らないorz
>そもそも流行っている事が最も重要な人は使っていない これの日本語的な意味がわからん。読めん。
- 216 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 01:13:18 ]
- 「はやっている == もっとも じゅうようなこと」だと かんがえる ひとは つかっていないんじゃないかな。
- 217 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 02:45:50 ]
- 絶対流行らない。
仕様を理解してもらえないと思う。
- 218 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 03:20:34 ]
- でもさ、むかし、Lispすげー流行ったじゃん?
- 219 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 05:28:17 ]
- >>212
forループと(効率的に)同等なものは破壊的代入を使わなくても書ける。 Haskellでも破壊的クイックソートは書ける。 リストに対しては書けないけど、これはむしろ当然だろう。 副作用があることと、代入スタイルのプログラミングができることを混同しているように見える。 「必要悪」とされるべきは代入スタイルのプログラミング。 Haskellには副作用は無いけど、代入スタイルのプログラミングをサポートしているから、 これをHaskellが遅い理由にするのはおかしい。
- 220 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 05:52:08 ]
- 便乗質問で申し訳ないんですが、
100MB を超えるような巨大配列を取り扱うような 科学技術計算でも大丈夫ですか? 参照透明性ということで、配列要素を一部分変更するたび毎に 配列の全コピーし直してるのかと思っているのですが大きな誤解ですか? どうしても副作用のあるコードを書きたくなってしまいます。
- 221 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 06:12:19 ]
- >>220
Haskellの配列は二系統あって、一つが変更毎に完全なコピーを作るIArrayインタフェースで、 もう一つがコピーなしで破壊的操作ができる代わりにモナドを通した操作しか認めないMArrayインタフェース。 だから、この点に関しては問題ない。科学技術計算をする上で他に障害が無いかは保障しかねるけど。
- 222 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 06:40:16 ]
- >>221
MArray インターフェースですか。 そういうのが有ったんですね。それで勇気が出ました。とっても重要な情報です。 多分、他には根源的な支障はないと思います。 あともう一つ高速化手法として 最近流行の並列プログラミングもしたいのですが、 こっちは Haskell ではまだまだの段階なのかな?と勝手に思っています。
- 223 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 08:38:35 ]
- >副作用があることと、代入スタイルのプログラミングができることを混同しているように見える。
IORef等への参照セルへの代入は「副作用」として知られていますが何か? 少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。 時間効率についてはオーダーの議論で逃げればいいけど。
- 224 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 08:43:28 ]
- >絶対流行らない。
>仕様を理解してもらえないと思う。 C++のバッドノウハウ集や、Javaの複雑なgenericsを理解できるなら、 Haskellの多相型や型クラスを理解するのはそう難しくはないでしょ。 GoFのVisitorやMementoパターンが理解できるなら、高階関数を使いこなすのも特に問題ないかと。 どれも一時期流行したもの。 Haskellが凡人に理解できないと思うのは、それこそ選民意識じゃない?
- 225 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:11:42 ]
- >IORef等への参照セルへの代入は「副作用」として知られていますが何か?
言葉遣いの問題だが、副作用ってのは「関数適用や式の評価に際して計算以外のことを行うこと」 であって、IORefの操作はこの定義に当てはまらないので副作用とはいえないと思う。 そのためにわざわざ「代入的プログラミング」という言い方をしたんだが。 >少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。 >時間効率についてはオーダーの議論で逃げればいいけど。 言葉の問題を除いて、同意。
- 226 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 15:06:19 ]
- IORef とかって、IORef とかを取り除く時にコピーが発生するんじゃないの?
- 227 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 01:40:42 ]
- でもまあ、Haskellで科学技術計算なんてCに比べると10倍以上遅いんで、
する気にならないですけどね。
- 228 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 05:45:34 ]
- >>227
あ〜。いいんですよ。とりあえず速度は。 最終的にどんな感じのプログラムになるか実際に見てみたいんですから。 それに計算対象や入力によって速度をそれほど気にしない場合もありますし。
- 229 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 08:10:05 ]
- C言語でカリカリにチューニングした速い実装を書いて、
Haskellでさくっとかいた実装の出力と比較して検算する (Nバージョンプログラミング) というのはアリかもしれないね。
- 230 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 08:26:59 ]
- >言葉遣いの問題だが、副作用ってのは「関数適用や式の評価に際して計算以外のことを行うこと」 であって、
わざわざ反論するのも面倒だけど、言葉使いの話をするならば、反論させてもらう。 何度も書くが、副作用(side effect)ってのはIORefへの代入も含むと一般に考えられている。 例えばSICPで、Schemeに代入の機能を入れる所で、side effect bugという言葉が出てくるし、 何より IORefを扱うモナド IOモナドは「副作用」を扱うモナドじゃないか。 IOモナドやState使わないと代入は純粋関数的に書けないでしょ。 適当にぐぐっただけでも(Cleanのマニュアルだが) sky.zero.ad.jp/〜zaa54437/programming/concepts/index3.htm#a6 >代入は、純粋な関数型言語では排除されている。というのも、代入演算子は副作用(side effect)を >伴う為、参照透明性(referential transparency)が破壊されてしまうからである。 「狭義の副作用」という言葉があるのかどうかは知らないが、一般には代入も副作用と考えられている。
- 231 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 09:46:16 ]
- >>230
誤解を招く言い方だったが、俺が指摘したかったのはそこじゃない。 >何より IORefを扱うモナド IOモナドは「副作用」を扱うモナドじゃないか。 違う。「入出力」を「副作用なしで」扱うモナドだ。 ここで言う「入出力」にはIORefの操作なんかも含める。 なんでこの区別にこだわるかというと、 ・>>210は「Haskellに副作用が無い」という前提で話している。 だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。 ・unsafePerformIOなどによって導入される本物の副作用との区別ができたほうが良い。 という理由から。
- 232 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 12:27:10 ]
- ああ、言いたいことは分かったよ。
IOモナドは副作用を陽に扱わない。 Haskellは、副作用を表現するIOモナドを純粋関数的に「繋いで」、mainとして定義するスタイル。 繋いだアクションが逐次実行されることで、実行形式は副作用を伴うプログラムとして動作する。 一方、unsafePerformIO はIOモナドとは違い、Haskellの遅延評価のステップの途中で 本当に「副作用的に」評価される(純粋関数の枠を壊している)。 それを言いたいのは分かった。 >・>>210は「Haskellに副作用が無い」という前提で話している。 > だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。 どうしてその前提が読み取れるのか分からんけど。 というか明らかに IOモナドを副作用を扱うモナドでそ。unsafePerformIOと区別したいのは分かったが。 Haskellで副作用を表現できることはもはや常識なわけで、 「Haskellは副作用を(表面上)追い出した為にIOモナドというややこしい形でしか扱えない。しかし副作用は効率的なプログラムを扱う上で必要悪だよな。もっと簡単にならんのか?」 という風に読んだ。
|

|