トップページtech
1001コメント379KB

関数型プログラミング言語Haskell Part27_©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net2015/01/08(木) 21:02:35.67ID:IQPOX3u7
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
http://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part26
http://peace.2ch.net/test/read.cgi/tech/1406436392/
0232デフォルトの名無しさん2015/01/22(木) 07:29:09.34ID:yXMo1Viy
>>231
お前さんがしたいだろう主張の正しい定式化は

(遅延評価が採用されている ∧ 副作用がある) → 動作がまずい
⇔遅延評価が採用されている → (副作用がない ∨ 動作がまずい)
⇔遅延評価が採用されている → (副作用がある → 動作がまずい)

だ。これはお前さんの

(遅延評価が採用されている → 副作用がある) → 動作がまずい

ではない。「flipして戻すと」とか最初からできない。
その時点で逆だの対偶だのと関係なくなってるわ。
0233デフォルトの名無しさん2015/01/22(木) 07:59:21.85ID:hihrfS9D
>>231のカッコの付け方もそれと同じだよ?
0234デフォルトの名無しさん2015/01/22(木) 08:20:28.03ID:yXMo1Viy
>>233
それなら「flipして戻す」とかできないだろ。
前2つは「→」で結合されてないんだからな。
0235デフォルトの名無しさん2015/01/22(木) 08:24:04.14ID:gOPwVEDJ
>>234
flip :: (a -> (b -> c)) -> (b -> (a -> c))
なんですけど…
0236デフォルトの名無しさん2015/01/22(木) 08:43:59.72ID:C1enpK1T
>>220
しぃっ!
0237デフォルトの名無しさん2015/01/22(木) 08:45:42.60ID:7Blthlt5
kenokabeさんはUCLAを卒業してるんだから刃向かうなよ
0238デフォルトの名無しさん2015/01/22(木) 08:46:07.01ID:J1v0x3Vw
>>228
IOを世界状態の関数だと思うと、例外とか並行性で訳分からなくならない?
例えば、mv :: MVar Intのとき、
modifyMVar_ mv (return . (+2))

modifyMVar_ mv (return . (+1)) >> modifyMVar_ mv (return . (+1))
は違う意味だけど、この二つが異なる「関数」だと言うのは簡単じゃない気がする
0239デフォルトの名無しさん2015/01/22(木) 09:12:23.26ID:yXMo1Viy
>>235
ありゃ、そらそうだ。すまんね。だが、それで言えるのは

副作用がある → (遅延評価が採用されている → 動作がまずい)

なので(これは正しい定式だ)、
>>231が「flipして戻す」をしてないってこったね。
0240デフォルトの名無しさん2015/01/22(木) 09:14:16.99ID:yXMo1Viy
ん、ありゃ混乱してきた。
>>231は「flipして戻す」はしてるのか。すまんほんとうにすまん。
眠くてボケてるな。

単に対偶とか逆とか裏とかを取るそういう操作じゃないってだけだ。
0241デフォルトの名無しさん2015/01/22(木) 09:28:26.88ID:m5cyHAPk
いえ、ニュアンスは伝わってますよ。
おかげさまで、遅延評価とHaskell の関わりが解りました。

全域が参照透過だからこそ、遅延評価をデフォルトにできたんすね。

圏論の枠組みで値を扱いたい

Moggi「モナドあれ」

入出力含む全てを参照透過にできた → コンパイラが攻撃的になれるので動作速度も上がった

遅延評価をデフォルトにできた → モジュール性上がった
0242デフォルトの名無しさん2015/01/22(木) 09:33:24.41ID:luu2eUXm
>>239-240
a → b だとまずい = a → (b → まずい)
b → a だとまずい = b → (a → まずい)
は両方とも意味は同じなんだけど、同じ意味に対して書き方が二つあって、
左辺の逆、裏、対偶は違うものになるってことだと思う。
0243デフォルトの名無しさん2015/01/22(木) 09:39:51.90ID:luu2eUXm
>>241
参照透過にしたい & 遅延評価にしたい

副作用の扱いに困る

モナドを使えば良いことに気づく

だよ。

ちなみにkenokabeが圏論とか言ってるのは完全にデタラメだよ。
0244デフォルトの名無しさん2015/01/22(木) 09:45:32.68ID:luu2eUXm
>>242
すまん、これは括弧無しだとさすがにまずかった。
a → (b だとまずい) = a → (b → まずい)
b → (a だとまずい) = b → (a → まずい)
0245デフォルトの名無しさん2015/01/22(木) 10:03:41.42ID:m5cyHAPk
>>243
へええ、参照透過も遅延評価も結果じゃなくて目的だったんですか!

Haskell と圏論の繋がりがわかんないです。
そういえば訳本の教科書には圏論のけの字も出てこないし、Preludeではidも(.)もCategoryのクラスメソッドじゃないし、歴史的にはクライスリトリプルをモナドとして基幹に採用して以来、徐々に圏論を取り入れてきた、って感じなんすかね。
0246デフォルトの名無しさん2015/01/22(木) 10:14:15.85ID:TlerM3mu
圏論は性質を満たすパターンを集めたものだからさ、デザインパターン集みたいなもんだよ。
OOP で言うデザインパターンはイディオムだけど、 Haskell では型クラスとして記述可能にしているという違いはある。
つっても、例えばモナドがモナド則を満たすかどうかみたいにインターフェイス以外に必要なルールはプログラマの責任だけどな。
0247デフォルトの名無しさん2015/01/22(木) 10:22:57.72ID:ZxT+7VDJ
圏論の考え方でつくられた、JavaScriptで動作する純粋関数型プログラミング言語 spinoza (スピノザ)〜その形式的定義と数学的基盤
http://b.hatena.ne.jp/entry/qiita.com/kenokabe/items/61d156005c7831c693cd
0248デフォルトの名無しさん2015/01/22(木) 10:28:47.74ID:m5cyHAPk
kenokabe 氏の記事はちゃんと読めてないけど、「圏論を導入したのは遅延評価が目的って強弁してたら副作用の除去が目的って主張する関数屋さんに絡まれた。はいここ重要」みたいに言ってたような。

実際は両方が重要だったってことね。
0249デフォルトの名無しさん2015/01/22(木) 10:38:43.08ID:y/T1Azr6
>>246
圏論はデザインパターン、ですか。そういう視点は無かった。勉強になります。
0250デフォルトの名無しさん2015/01/22(木) 10:53:22.85ID:C1enpK1T
入力待ちとかしてるアイドル状態間にガベコレ発動させとくことってできないの?
0251デフォルトの名無しさん2015/01/22(木) 11:39:34.25ID:yXMo1Viy
>>250
System.Mem ( performGC:: IO() ) 使えば?
0252デフォルトの名無しさん2015/01/22(木) 12:12:33.73ID:J1v0x3Vw
>>250
-threadedを付けてコンパイルするとデフォルトで0.3秒のアイドル後に自動GC
https://downloads.haskell.org/~ghc/6.10.1/docs/html/users_guide/runtime-control.html#id2622480
0253デフォルトの名無しさん2015/01/22(木) 12:16:17.06ID:yXMo1Viy
お、便利。
0254デフォルトの名無しさん2015/01/22(木) 12:25:44.90ID:vPFLQWei
遅延評価の目的は再帰的データ構造 (再帰関数には遅延評価は必要ない)
xs = 'x' : xs

参照透過の目的はデータ構造を初期化する順序を自由にすること
(関数を定義する順序は元々問題なかった)
xs = foo 'x'
ys = foo 'y'
0255デフォルトの名無しさん2015/01/22(木) 15:19:16.52ID:C1enpK1T
>>252
流石です
0256デフォルトの名無しさん2015/01/22(木) 16:51:17.12ID:JA0C5j9T
お、kenokabe、コメント欄含めてエントリを消しやがったwww
そして別エントリとして同じ内容を投稿かwwww
0257デフォルトの名無しさん2015/01/22(木) 22:03:05.55ID:K0V9CDcS
>>245
圏論をプログラミング言語の理論に応用してその結果を取り入れようという流れと、
圏論の構造を言語内に取り込もうという流れがあると思う。
モナドの場合はMoggiは前者の意図だったんだけど、Wadlerが後者もやった。
後者は比較的最近の流れで、元々は圏論を取り込もうという目的はなかったと思う。
>>246が言ってるのは後者の話で、Haskellに関する前者の話も沢山ある。
0258デフォルトの名無しさん2015/01/22(木) 23:32:32.10ID:+0By/pHu
>>212
クライスリ圏は、名前の通りKleisliという人の研究に基づく。
後に言う Kleisli triple は圏論の一般論の中で整理された。整理された後もしばらくは triple
と呼ばれていたが、複合語を作るときに triple だと困る(字面上意味不明の言葉になりやすい)
ため、MacLaneがモナドという名称を提案した。モナドという名称はライプニッツの単子論から借りてきたものだけど、ただ単に名前を借りてきたというのが実情。
(「カテゴリー」なんかも元々はアリストテレスの哲学に関連する用語の名詞を借りてきたもの。)
ただし、モナドは関手圏における「一般化された半群(モノイド)」とみなせるという事情があり、「モノイド」と音が近い哲学用語として「モナド」が選ばれたというぐらいの意味はある。
以上のことは「圏論の基礎」pp.183-198 あたりをよく読めば判る。そして、この辺のことは数学の内部での動機によって研究されていて、
コンピュータサイエンスとはあまり関連が意識されていなかった。


Moggiは "Computational lambda-calculus and monads" で計算の圏論的意味論を示した。この中で彼は色々な種類の「計算」が
X --> T(Y) という形の「射」として捉えられると主張した。ただし、Tは考えている圏における自己関手。ところで、このような「計算」
の合成可能性を考えると、Tは自己関手であるにとどまらず、モナドであることが要求される。(要点は、T(T(X)) のような「二重の文脈」
を一重つまりT(X) の形に解くことができるかということ)。カルテジアン積を持つ圏を考えるともう少し強い性質が要求されるが、
これが「強モナド」というもの。

Moggiの論文はいくつかの例が取り上げられており、たとえば状態モナドなども扱われている。関数の内部状態のような、数学的には
ちょっと扱いに困るようなものが、Moggiの示した工夫に依ってうまく扱えるということは、「純粋な関数」(従って呼ばれる毎に遷移する内部状態を持たない)
たちとモナドを組み合わせて、「内部状態を持つ関数」などをシミュレートできるということを意味する。
0259デフォルトの名無しさん2015/01/22(木) 23:39:27.07ID:+0By/pHu
>>258
じゃあなんで「純粋な関数」に固執する意味があるのか。

個人的にはあんまないと思うけど、一応

1.純粋な関数であれば(呼び出し回数に応じて返す値が変わるようなことはないので)最適化しやすい(ほんとかなぁ)。
2.最外最左簡約のように、「同じ部分式を何度も評価する」ことになりやすい評価戦略を選んだ場合、もし関数の純粋性が保証されているならば
  「グラフ簡約」のような最適化手法により、良いコードが生成できる(ことがある)。

なんてことはあると思います。じゃあなんで「最外簡約」みたいなマイナーな評価戦略を使いたいかといえば

・無限リスト、例えば [1 ..] みたいのが余裕で作れて表現力が増す。

ぐらいしか思いつきませんが、とにかく「計算の結果次第で配列の長さが変わる」ような計算を、あまり
チマチマとしたコードを書かずにズバッと書けたりして俺TUEEEできるというのがいいんですかね。

まあ頭いい人は放っておくと変なものを作るということなんだと思います。
0260デフォルトの名無しさん2015/01/22(木) 23:57:29.31ID:+0By/pHu
>>259
蛇足。

「最外簡約」は、構文木を根の方から評価しようという評価戦略で、評価の実態からそのように呼ばれている。
一方で、プログラミングする人の気持で、構文木の終端が評価の最後の方にまで遅延されるという印象に基づいて
「遅延評価」とも呼ばれます。

いずれにせよ「遅延評価」をあまり神秘的に考える必要はないです。
0261デフォルトの名無しさん2015/01/23(金) 02:43:28.47ID:9Ll9FhEC
正格評価に対する遅延評価の利点として
停止する可能性がある計算は必ず停止するというのがあったと思うんですが
それはあまり重視されない?
0262デフォルトの名無しさん2015/01/23(金) 03:19:59.17ID:jnn1J11N
そっちのほうが重視されると思う
0263デフォルトの名無しさん2015/01/23(金) 11:34:44.27ID:FG7Cgjgq
停止しない関数って本当に純粋な関数なのか?
無限ループは副作用じゃないか
同じ引数で結果が2通り以上になるのは副作用
なら0通りも副作用ではないか
0264デフォルトの名無しさん2015/01/23(金) 11:58:54.97ID:5jDftkrl
>>263
>無限ループは副作用じゃないか

f(n) = f(n-1)はたとえば、f(5)=f(4)で、同じ引数なら同じ結果の純粋な関数だ。
単に続けてf(4)も計算しようとするから停止しないだけ。
それが気に入らないなら、停止しないということを「⊥ ボトム」という値で
表現すれば、f(5) = ⊥ は常に成り立つんだからやっぱり純粋性は保たれている。
0265デフォルトの名無しさん2015/01/23(金) 13:07:46.09ID:FG7Cgjgq
⊥はNothingに似てるしMaybeはMonadだから副作用と関係ありそうだけどな
0266デフォルトの名無しさん2015/01/23(金) 13:15:42.27ID:mGGgFMZE
ない
0267デフォルトの名無しさん2015/01/23(金) 13:39:39.55ID:5jDftkrl
>>265
>⊥はNothingに似てるしMaybeはMonadだから副作用と関係ありそうだけどな

そういう適当な連想ゲームしてっとkenokabeになるぞ。
0268デフォルトの名無しさん2015/01/23(金) 14:05:12.06ID:FG7Cgjgq
日本語や英語を使っている時点で同じ穴の狢
だからプログラミング言語がある
0269デフォルトの名無しさん2015/01/23(金) 15:05:27.84ID:mGGgFMZE
何言ってんだおまえ
0270デフォルトの名無しさん2015/01/23(金) 16:28:32.03ID:hSE1K7on
ttp://blog.jle.im/entry/io-monad-considered-harmful
0271デフォルトの名無しさん2015/01/23(金) 16:52:38.24ID:mGGgFMZE
毛の壁マジでQiita潰しそうだな
あんなバカ記事ストックしてる奴らも悪いけど、ある意味すげーわ
0272デフォルトの名無しさん2015/01/23(金) 17:49:56.81ID:he2eREiv
半月くらい前のアレから毛の壁見てなかったけどまだやってんのか…。
少し読んだら前だけじゃなく後ろからも手斧飛んでて笑った。
何がしたいんだよ。
0273デフォルトの名無しさん2015/01/23(金) 18:00:53.81ID:FG7Cgjgq
スパゲッティは上流工程で起きている
0274デフォルトの名無しさん2015/01/23(金) 22:03:27.40ID:psNR2ovj
cabal sandbox init したディレクトリを丸ごとどこかにアップロードし、
それを別のマシンにダウンロードして、そこで元と同じ環境になるようにしたい。

この場合、cabal.sandbox.config ファイルの中に書かれている絶対パスを
それぞれのダウンロード先の環境に合わせて書き直さなければならないの?
たとえば、local-repo: [なんとか]/.cabal-sandbox/packages の値とか。

この [ なんとか] の部分を消して相対パスにしたら、パスが見つからないというエラーが出た。
0275デフォルトの名無しさん2015/01/23(金) 22:06:34.99ID:8zAsCc6J
>>263-269
通常の意味では副作用じゃないけど、
型に⊥を加えるのは全域関数の圏のモナドだよ。
0276デフォルトの名無しさん2015/01/23(金) 23:17:22.27ID:5jDftkrl
>>275
知ってる。リフティング。
しかし、モナドは別に副作用ではない。
0277デフォルトの名無しさん2015/01/24(土) 00:19:47.30ID:FLIgZ7JZ
>>277
全域関数を純粋な関数として他は副作用とする考えもあるし、そういう言語もあるよ。
http://www.rise4fun.com/koka/tutorial
0278デフォルトの名無しさん2015/01/24(土) 00:57:27.87ID:d5sOd2yH
なかなか再帰的な意見だ
0279デフォルトの名無しさん2015/01/24(土) 10:35:16.53ID:ldvaOpkQ
遅延評価って人間が脳内で自然にやっていることをコンピュータのロジックで実装したってこと?
0280デフォルトの名無しさん2015/01/24(土) 12:09:46.58ID:SXwXQLVs
そんなあやふやな話じゃなくて読んで字の如く評価を必要になるまで遅延させるだけの事だが
0281デフォルトの名無しさん2015/01/24(土) 12:34:55.72ID:kvIaPjFB
数学者は一つの式の中の部分式の評価順序ばかり気にしているが
Haskellには無関係な式が二つ以上ある
独立したモジュールが複数存在する
つまり数学者の脳内とプログラマの脳内でやってることが違う
0282デフォルトの名無しさん2015/01/24(土) 12:45:49.96ID:oRbgo8RH
>>281
遅延評価の形式的な議論とプログラマとしての理解にはなにも違いがないし、
君が理解してないだけだと思う
0283デフォルトの名無しさん2015/01/24(土) 20:25:38.71ID:oGAF5m1n
cabal の config ファイルに記述する全項目の意味を解説したサイトはないでしょうか。
英語でもかまいません。
0284デフォルトの名無しさん2015/01/25(日) 08:00:31.97ID:4n+jRXJn
thunkの愚直な考え方が面白い
でも遅延評価ってあんまり実装されてる言語無いんだね
0285デフォルトの名無しさん2015/01/25(日) 10:17:56.04ID:CZVIVtmk
遅延評価がなくなっても計算結果は同じになるか無限ループになるだけ
0286デフォルトの名無しさん2015/01/25(日) 10:35:28.00ID:47J/10kQ
労多くて益少なしだよ。遅延させた方が速くなる場合は多くないし、
正格評価の言語なら遅延評価させたい部分で()->*を渡すだけでいいのだから。
0287デフォルトの名無しさん2015/01/25(日) 10:56:39.83ID:yeeuIM7T
それってcal by name になるだけじゃない?
0288デフォルトの名無しさん2015/01/25(日) 11:08:22.84ID:s2HjDF7w
なるほど。
call by value な純粋関数型言語で、
引数を call by need で渡すのってできるの?
0289デフォルトの名無しさん2015/01/25(日) 12:30:43.11ID:47J/10kQ
メモ化自体は、副作用ありの言語なら1関数渡すだけでいいが、call by needにはできない。
副作用無しの言語ならメモ化も面倒。

けどメリットは少ない。
0290デフォルトの名無しさん2015/01/25(日) 13:43:20.57ID:CZVIVtmk
C「なぜifとwhileは関数ではないのか」
Lisp「関数もマクロも必要だから」Smalltalk「ブロックが必要」Haskell「遅延評価」
0291デフォルトの名無しさん2015/01/25(日) 14:45:02.13ID:yaDwD3P+
>>125
Haskellはイディオムが多すぎる、と思った。
多くのイディオムを身に着けたら効率の良いプログラミングは可能だろうが、
チーム開発は可能なのかな・・。

熟練者を集めても、頼っているイディオムに大きな違いがあるだろうに。
0292デフォルトの名無しさん2015/01/25(日) 15:01:30.80ID:TO6nbIrr
結局負担が記述にかかるか頭にかかるかの違いで
頭への負荷が平気ならイディオム連呼が
そうでないなら正規な表現の組み合わせで表現するのが効率がよい
効率の良さは結局人の性質によって異なるのだ

しかし頭への負担はどんな人間でも年とともにつらくなってくるものだから
将来を考えたらきっちり正規形で考える癖をつけとくべきだな
0293デフォルトの名無しさん2015/01/25(日) 23:02:37.58ID:CZVIVtmk
>>291
Haskellは型とクラスが多すぎる
変数の型と型変数のクラスを自動でチェックしたら効率の良いデバッグが可能
熟練者は頼っている型とクラスに大きな違いがある

>>292
静的型付けの効率の良さは人の性質によって異なる
0294デフォルトの名無しさん2015/01/25(日) 23:11:41.00ID:p3bk5TEE
まず人間を変えないと駄目だ
完全に道具に遊ばれてるな
0295デフォルトの名無しさん2015/01/26(月) 13:16:24.01ID:NLE6CajI
毛の壁アカウント抹消されたのか
0296デフォルトの名無しさん2015/01/26(月) 14:14:42.52ID:rq658b9R
Qiitaって垢BANするんだ
0297デフォルトの名無しさん2015/01/26(月) 19:49:58.93ID:XNIaxWEk
おいおい、それはやりすぎだろ‥ム板のコテ連中と同レベルで ban されるのか?
0298デフォルトの名無しさん2015/01/26(月) 20:00:14.82ID:86moXcK6
片山博xみたいな人畜無害なアホならまあ…
0299デフォルトの名無しさん2015/01/26(月) 20:08:46.77ID:6ykKj8/Z
タグに沿わないポエムは削除、ブロック機能の実装ぐらいが落とし所かと思ってたけど
毛一人をBANってのは何か違うよな
一番簡単な方法ではあるけども
0300デフォルトの名無しさん2015/01/26(月) 21:11:30.40ID:WHjADl5S
>>299
qiitaが毛の壁とやりとりしたが改善されなかったからって言ってたから
あの長文をqiitaに送りつけたんだろう
たぶん注意→凍結→ユーザー資格取り消し
ってやりとりがあったと思われ
0301デフォルトの名無しさん2015/01/26(月) 21:20:48.76ID:AD59R4uG
そろそろネットウォッチでやりたまえ
ここにいるのなら奴のことは忘れろ
0302デフォルトの名無しさん2015/01/26(月) 22:45:50.83ID:1uLj9DBp
スゲー今更だが、これスゲー
http://web.archive.org/web/20080622204226/http://www.cs.vu.nl/boilerplate/

ライブラリ ドキュメントの Data.Data のページに boilerplate へのリンクが貼ってあるが切れてて、探してたら見つかった。

やっと Data 型クラスの使い方がちょっと分かってきた。
仕組みはまだ分からんが。
0303デフォルトの名無しさん2015/01/27(火) 00:28:25.15ID:1sPJsT1Q
まあ宇月って人があらかた周知してくれて解決してくれたらしいね。良かった良かった。
0304デフォルトの名無しさん2015/01/27(火) 00:49:25.01ID:9RKPRbxp
くだらない
一人の敗者を除く全員が平等な世界のどこが良いのか
0305デフォルトの名無しさん2015/01/27(火) 00:55:23.26ID:ON3kwsIb
勝った気になってる奴も負けた気になってる奴もいらねえよ糞タコ
0306デフォルトの名無しさん2015/01/27(火) 01:15:28.77ID:pyp4F36G
毛の壁スレ@ネットウォッチ板
http://yomogi.2ch.net/test/read.cgi/net/1421926957/
0307デフォルトの名無しさん2015/01/27(火) 17:27:41.86ID:+1Xip5ap
>>303
まさか毛も今回のスペシャルフォーメーションにQの運営がゲスト参加してるとは思うまいw
0308デフォルトの名無しさん2015/01/27(火) 18:05:56.19ID:GDvEOGFI
「関数型言語」に関するFAQ形式の一般的説明
http://qiita.com/esumii/items/ec589d138e72e22ea97e
0309デフォルトの名無しさん2015/01/27(火) 18:15:19.71ID:RZorUkzC
>>298
もっとひどいやつがいるぞ
「extern は要らない子!」って今でも連呼しているが、こういうやつこそ ban されないと
0310デフォルトの名無しさん2015/01/27(火) 18:44:45.47ID:ON3kwsIb
そんな奴は勝手に困っとけばいいと思うの
0311デフォルトの名無しさん2015/01/27(火) 20:19:19.21ID:ox5yAQX/
             ,イ    │
          //      |:!
            //,. -/r‐- 、| !
         /,/ ./ |  _」 ト、
       /.\`/  |二...-┘ ヽ
.        i   ,.>、;/ー- 、    l
       ! ∠.._;'____\   |
      ,!イ く二>,.、 <二>`\.、ヽ.
     /'´レ--‐'ノ. `ー---- 、 |\ ヽ、 「forが無いようだが…」
    \  `l  (!"      Jfヽ!  `''-;ゝ
      `‐、jヽ ヾニニゝ   ゙イ" }_,,. ‐''´
         `´\  ー   / ,ィ_}
.          |_ `ー ''´ _」'
        _,.| ~||「  ̄ 人|、._
  ,r==;"´  ヽ ミ|||彡   / ` ー`==、-、
. ///,イ  ___ ヽ|||_,,. ‐''´___  | | | |ヽ
0312デフォルトの名無しさん2015/01/27(火) 23:01:22.39ID:8Es+EE5K
>>311

つ forM_
0313デフォルトの名無しさん2015/01/28(水) 07:48:57.72ID:zESgryfs
このAA良くできてるだろ?
誰の顔だと思う?

         ,.-―: ̄`ー::::::::::、
       /::::::::::::.::::::::::::::::::::::::::::`::、、
      /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
      l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
      l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
     l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
     l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
     ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
    ヽ:::::    ̄ .)::;  l  ̄   l::::/
     、:::::..   /:::; .,-、     l:::/、
    ,―::::::::  ゝヽ- ー' 、    l::/,、ヽ
     l,、,、,,:、:: / ,--、,-.、_ l    /::::::,、,、l
   l,、,、,、,、,、::、 `ー ̄-'   /:::::::::::,、,、l
   l,、,、,、,、,、,、::ヽ      /::::::::、,、,、,、,ノ:\
   l,、,、,、,、,、,、,、,、,,ー― ':::::::,、,、,、,/,、,、,、,、,`
  /,、,、,、,、,、,、,、,、,、:::::::::::::::::::::::::::、,、、,、,、,、,、,、,、
0314デフォルトの名無しさん2015/01/28(水) 08:05:33.60ID:slxhZiXo
お前のきったねえ顔じゃねえのか
スレ違いも大概にするか、親不知から海に飛び込んで落っ死ねカス
0315デフォルトの名無しさん2015/01/28(水) 08:23:42.88ID:PZUlbwjy
https://twitter.com/_kenron_

関数型bot
0316デフォルトの名無しさん2015/01/28(水) 12:11:51.87ID:1UBwC5Qa
https://twitter.com/_kenron_/statuses/558963343629623296
0317デフォルトの名無しさん2015/01/28(水) 12:45:31.15ID:YDLWOLdX
>>316はネットwatch板のスレに貼られたのと同じタイミングだし、
あっちの同じ人の書き込みを見るとkenokabeに粘着する人のようだし、
このスレもkenokabeに粘着する人に粘着されるのかもしれない。
0318デフォルトの名無しさん2015/01/28(水) 14:08:39.14ID:1WBxC8/8
関数型を使いこなせないのが自己責任というのはまあ分かるが
逆に使いこなせたら全て自分の手柄にしないと割に合わない
でも自分の手柄にしたいなら関数型ではなく自己流でやるべき

関数型が正しいかどうかは知らんが
自己責任論が多かれ少なかれ嘘臭いのはみんな知ってる
0319デフォルトの名無しさん2015/01/28(水) 19:27:21.59ID:GcZv3SAt
スレの雰囲気がなんかおかしい。
0320デフォルトの名無しさん2015/01/28(水) 19:28:42.26ID:D4DppUD9
Haskellは個人的には面白いけど思想に妥協があまり無いのでメジャーになれない感が
ひしひしと伝わってくるw
でも筋はいいのでHaskellの子孫に考え方が継承されればいいと思っている
自分はJavaやScalaでの関数型プログラミングのドキュメントを読んでも
ピンと来なかったがHaskellのドキュメントを読んで少し解った気がする
0321デフォルトの名無しさん2015/01/28(水) 19:31:32.93ID:93RLbcHP
その調子
0322デフォルトの名無しさん2015/01/29(木) 06:01:24.39ID:LrWrINrL
http://imgur.com/a/tiW5S
0323デフォルトの名無しさん2015/01/29(木) 08:35:38.22ID:FGN+iwuI
         ,.-―: ̄`ー::::::::::、
       /::::::::::::.::::::::::::::::::::::::::::`::、、
      /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
      l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
      l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
     l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
     l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
     ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
    ヽ:::::    ̄ .)::;  l  ̄   l::::/
     、:::::..   /:::; .,-、     l:::/、
    ,―::::::::  ゝヽ- ー' 、    l::/,、ヽ   Qiitaによる圏論弾圧を許すな!
     l,、,、,,:、:: / ,--、,-.、_ l    /::::::,、,、l
   l,、,、,、,、,、::、 `ー ̄-'   /:::::::::::,、,、l
   l,、,、,、,、,、,、::ヽ      /::::::::、,、,、,、,ノ:\
   l,、,、,、,、,、,、,、,、,,ー― ':::::::,、,、,、,/,、,、,、,、,`
  /,、,、,、,、,、,、,、,、,、:::::::::::::::::::::::::::、,、、,、,、,、,、,、,、
0324デフォルトの名無しさん2015/01/29(木) 08:47:40.40ID:TTUB+Uno
健論は引っ込んでろ
0325デフォルトの名無しさん2015/01/29(木) 10:15:00.02ID:2lYDg0Ki
自称関数型コミュニティの識者の我々が正してやらねば、みたいな正義感怖い
0326デフォルトの名無しさん2015/01/29(木) 11:03:55.08ID:XWNZF0m4
kenokabe氏、遠隔操作犯・猫好き・ヲタとの相関を語る
http://nmuta.dip.jp/~muta/tog301.pdf
0327デフォルトの名無しさん2015/01/29(木) 11:57:00.17ID:YfwvpXl2
>>325
正義感とか誤解しないでくれ
関数型言語というのは我々は高尚なんだ
ゴミが混じってはいけないのだよ
https://lispmachine.files.wordpress.com/2013/03/chart-dmitry-ignatiev.jpg
0328デフォルトの名無しさん2015/01/29(木) 11:58:03.66ID:CAv4BBBa
関数型コミュニティがHaskellコミュニティではないのは
Haskellが崩壊してもHaskellは真の関数型ではなかったと言い訳できるからだよ
そういうトリックを使ってる自覚のある識者には正義感なんてないだろ
0329デフォルトの名無しさん2015/01/29(木) 12:45:27.10ID:rtImRMnr
Haskellが崩壊という言葉の意味が一ミリも理解できない
0330デフォルトの名無しさん2015/01/29(木) 13:57:27.94ID:zNgdEinm
殺すことのできないキチガイは隔離しないと害悪にしかならない。
「話せば分かる」は最低限のコミュニケーション能力がある相手じゃないと成り立たない。
コミュニケーションとれない人間、威圧的な人間に構うと疲れるだけ。

毛の壁ほどではない、分かりにくい隔離対象もいるから注意な。
0331デフォルトの名無しさん2015/01/29(木) 14:32:14.62ID:4sa11BOV
このスレの隔離対象は分かりやすいぞ
ほんとマジで金払うから死んでくれない?手伝うから
いくら払ったら元のスレに戻してくれる?ニホンゴワカル?
■ このスレッドは過去ログ倉庫に格納されています