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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:19:28.26 ]
haskell.org
ttp://www.haskell.org/

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

過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/

2 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:19:49.55 ]
関連書籍
・Introduction to Functional Programming Using Haskell (2nd ed.)
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0134843460/

・Haskell: The Craft of Functional Programming
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0201342758/

・The Fun of Programming
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0333992857/

・The Haskell School of Expression: Learning Functional Programming Through Multimedia
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0521644089/

・入門Haskell
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4839919623/

・ふつうのHaskellプログラミング
 ttp://item.rakuten.co.jp/book/4052963/

・Programming in Haskell
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0521692695/

・Real World Haskell
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0596514980

・関数プログラミングの楽しみ
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4274068056

3 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:20:17.30 ]

 東京にある6つのキー局の内、製作から財務まで一貫して朝鮮人が行ってるテレビ局が1つ
 中国共産党から毎年大量の反日工作費が流れているテレビ局が2つ
 もろに北朝鮮と繋がっているテレビ局が1つ  
年寄はまだまだテレビという外国人に騙され続ける


4 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:20:18.07 ]
関連リンク
・GHC Wiki
 ttp://hackage.haskell.org/trac/ghc/wiki/TitleIndex

・A History of Haskell
 ttp://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/

・関数型関連の用語集
 ttp://sky.zero.ad.jp/~zaa54437/programming/concepts/

・本物のプログラマはHaskellを使う
 ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/?ST=ittrend

・Haskell API search Engine
ttp://www.haskell.org/hoogle/

【簡単な使い方】
1.検索バーに関数名を入れて検索
 例 map
2.検索バーに型名を入れて検索
 例 (a -> b) -> [a] -> [b]

5 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:22:49.08 ]
Real World Haskell
book.realworldhaskell.org/read/

Learn You a Haskell for Great Good!
learnyouahaskell.com/chapters

6 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:36:27.61 ]


あれから新しい本も仲間入りしたし、新版も出たから、追加しとくわ

・Haskell: The Craft of Functional Programming (3rd ed.)
www.haskellcraft.com/craft3e/Home.html
www.amazon.co.jp/dp/0201882957/

・Learn You a Haskell for Great Good!
learnyouahaskell.com/
www.amazon.co.jp/dp/1593272839/


7 名前:デフォルトの名無しさん [2012/01/03(火) 10:48:00.13 ]
>>999
>関数型言語って、スパゲティになりやすい。
>宣言的で1つ1つ完結しているから理解しやすいとか馬鹿が言うけど、
>実際には宣言的だからこそスパゲッティコードになる。
モナドの観点からは、これに対してどう答えるんだろか?

8 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 10:51:34.50 ]
前から思ってたけどおまえ質問下手すぎ

9 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 11:59:31.93 ]
手続き型言語で言えばクラスに分割せずにmainに詰め込んだほうが色々飛ばなくて判りやすいというのと同じ類のいちゃもんだな

10 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 11:59:52.07 ]
質問が下手なのは質問じゃないからだろうな
脳内では結論決まってんだろ?



11 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 12:03:01.20 ]
自分ではわからないだろうけど、バカが書くからスパゲッティになるんだよ

12 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 12:03:16.47 ]
本当に「宣言的」なら理論的にはスパゲッティになりようがない

先ほども言ったが、スパゲッティというのは実行順序や計算順序が複雑に絡まること
(ここで言う絡まるというのは、解の導出過程を追うとコード上を脈絡無く飛び交ってしまうこと)

完全に宣言的なものには解を導くのに計算順序という概念がない
だから、順序があるのはそれが手続き的な面を少なからず持ってるからだ
(完全に宣言的なもの、HTML や Alloy の記述などはもうプログラムとは呼べないと俺は思う)

Haskellの持つ宣言的な性質は、例えば、参照透過性ゆえに
関数をどこで使用しても同じ結果が得られることに現れている
しかしHaskellだって完全に宣言的ではないから、
計算順序をしっかり意識しないといけないケースがある

ただその場合も、順序を意識して計算を追うのはCやJavaなどよりも楽になるケースが多い
関数をどこで使用しても同じ結果が得られると言うことは、
その結果を知っているなら、それ以上その先深く計算を追う必要が無いからだ

そしてその結果を知る事も比較的容易だ
関数の結果が引数以外の外部環境(変化するクラスのメンバ変数など)に依らないから、
単に計算対象の値に問題の関数を適用して結果を調べればいいだけ(内部計算は知る必要が無い)

実際問題として、Haskellのプログラミングは正直なところ言うほど単純ではないが、
それでもそのようなHaskellの持つ宣言的な性質の部分を大いに活用できるから、
手続き寄りなCやJavaなどよりも理解しやすいと言われるし、俺もそう感じる

13 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 12:09:39.97 ]
モナドのうち手続き的な処理のための奴は、元を辿ると、意味論の研究にたどりつく。
手続きの意味を明確にするべくデザインされたものが「スパゲティになる」とか、
意味不明の主張だと思うな。

14 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 12:44:04.80 ]
JavaやJavaScriptでも宣言的なプログラミングを目指してるのにねぇ…


15 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 12:44:46.52 ]
>>12
本当にHaskellでプログラム書いたことある?
Haskellで実用的プログラミングをしたら、計算順序を意識せずにはいられないよ。

lazyゆえにどれだけメモリリークが発生しやすくなっていると思う?
計算順序のチューニングなしにどうやってメモリリークに対処するんだ?

「計算順序とか関係なく、各宣言を独立に扱える」とか綺麗事逝ってるうちはいいが、
ひとたびリアルタイムなレスポンスを要求されたり、
長時間メモリリークなしに継続的に動作することを要求されたら
どれだけスパゲッティと格闘しなければならないか、理解してるか?

16 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:02:00.83 ]
スパゲッティはちょっと表現が違うと思うが…

17 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:03:37.88 ]
超高性能なプリプロセッサの域を出ない

18 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:10:19.95 ]
計算順序をゴチャゴチャやり始めたらモジュール性もクソもなくなる。
構造化による問題の局所化ができないのだから、スパゲッティーと言っていいな。

19 名前:デフォルトの名無しさん [2012/01/03(火) 13:20:09.04 ]
>>12
>(完全に宣言的なもの、HTML や Alloy の記述などはもうプログラム
とは呼べないと俺は思う)
プログラムと呼ぼうと呼ぶまいと、やることができれば、それが一番
いいんじゃないの?
しかし完全に宣言的ってあり得るか?

20 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:27:25.02 ]
どんな言語も土方さんに渡せばスパゲティーを作ってくれるよ



21 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:35:20.53 ]
>>15
もちろん日常的にHaskellでプログラムを書いている
実用的かどうかはそのアプリケーションを利用する環境に依るから何とも言えん
ただ、私(たち)が社内用に作ったアプリケーション、たとえば
意思決定支援システムのようなものは社員達に活用していただいている
ユーザーや外部環境とアルタイムにコミュニケーションするアプリケーションも作ってる

Haskellも計算順序を意識する必要があるケースがあると言ったはず
私はその計算順序がスパゲティになりにくいと言った

少なくとも私(たち)の作るアプリケーションの類では、
遅延性が原因のメモリリークは、C などのより厄介なメモリリークよりも潰しやすい
正確に言えば、アプリケーションの運営に問題にならない程度にまで潰すのは
C などに比べて用意であることの方が圧倒的に多い

申し訳ないが、こればかりは普段皆さんがどれとぼメモリリークを気にしているのか知らない
完全にゼロになる(どういう状態がメモリリークゼロと言えるのかも知らんが)まで、
ひたすら潰し続けるということを私は仕事でやったことがないから

もしかしたら、24時間356日正しく動き続けることが求められるアプリケーションでは、
遅延性が原因のメモリリークはとても厄介な存在かも知れん

逆に貴方はHaskellでどのようなアプリケーションを作った時に、
どのような部分に遅延性が原因のメモリリークが発生し、
それをどれくらい潰そうとして、それとどのように格闘して解決したのか、
ぜひ訊かせていただけないだろうか

22 名前:21 mailto:sage [2012/01/03(火) 13:38:21.21 ]
>>21
すまん

> 私はその計算順序がスパゲティになりにくいと言った

なりにくいとは言ってないな(頭にはあったが、言葉にはしていなかった)

計算順序を追うのがCなどに比べて楽になるケースが多いと言った

23 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:59:12.54 ]
計算順序厨は1+2+3は1+2が先でなければならない、とか考えるんかねぇw

24 名前:21 mailto:sage [2012/01/03(火) 14:02:04.92 ]
>>23
>>15 は君のような大馬鹿ではないから、
そういう計算順序を言っているのではないと思うぞ

その計算のどこにメモリリークが発生する余地がある?

25 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:15:22.38 ]
最近の小学校ではかけ算の順序厨がいるらしい

26 名前:デフォルトの名無しさん [2012/01/03(火) 18:35:13.10 ]
>>21
>もちろん日常的にHaskellでプログラムを書いている
>意思決定支援システムのようなものは社員達に活用していただいている
うーん。Haskellだろうとそれは大変だろ。
あんた以外がメンテすることはできるの?


27 名前:21 mailto:sage [2012/01/03(火) 18:51:51.64 ]
>>26
私(たち)と書いた
今は私含めて4人でプログラムして同じ4人でメンテしてる
社内ツール専門の部署だ

28 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:00:01.64 ]
いいなー楽しそうだなー

29 名前:デフォルトの名無しさん [2012/01/03(火) 19:18:16.88 ]
>>27
なるほど。
やろうと思えば1人でもできるのか?

30 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:53:23.08 ]
>>21
意思決定支援か。こっちも似ていて、機械学習系のシステム。
大規模行列を扱う時にメモリに抱え込む実装になっている。
サーバプロセスとして実装したから、24-365まではいかないが、
数ヶ月は走り続ける必要がある。

大変だったのは、サーバプロセスのメモリリークかな。
行列への書き込みからメモリリークを取るのは簡単な話だが、
サーバプロセスとして継続的に走り続けるから、
障害回復のためのジャーナルへの書き出しとか、
サーバプロセスに付随する色々な処理に非正格な処理が混ざると
メモリリーク祭りになる。

もちろんCで実装するのに比べれば対処は容易だ。
でもそれはGCの恩恵であって、lazyさや参照透明の恩恵とは違う。
GC付きのOOPLのほうが単純に実装できるかもしれない。
証券系でMLが好まれるのは、そのあたりが理由かもしれんと思った。



31 名前:21 mailto:sage [2012/01/03(火) 20:06:54.03 ]
>>29
制作時の話なら、作るアプリケーションの規模と、かけられる時間と、
私の今の知識や経験の量による

メンテの話なら、私(たち)が仕事で作ったツールのソースは、私一人でもできる
4人でメンテしてると言っても、そのつど責任者をゲームで一人決めて(押しつけて)、
その人がメインでメンテ、あとの3人は時々サポートするくらいだから

>>15
それはそうと、「計算順序とか関係なく、各宣言を独立に扱える」
本当にそんなことを言っているHaskellプログラマはちょっと問題がある
俺のことを指摘したのなら勘違いだろ、そもそも俺はそんなことは言ってない

「各宣言を独立に扱える」事を臭わすような発言はしたし
事実そういう利点を常に意識しているが、
それが「計算順序と関係なく」できるとは全く思っていない

計算順序はちゃんと意識しないとデバッグ時に計算が追えない
が、「各宣言を独立に扱える」ことにより、計算を追うデバッグの仕事が
Cなどに比べて楽になる、という意味の発言はした(理由も言った)

デバッグにおいて、「各宣言を独立に扱える」ことの別の利点もある
一連の計算に利用するそれぞれの関数を独立してデバッグできる
その関数の規模が小さいほど、みんなでデバッグしやすい(私たちは4人でデバッグしてる)

32 名前:デフォルトの名無しさん [2012/01/03(火) 20:11:26.98 ]
>>30
あまりよく知らないんだが、実用システムではメモリリークってそんな
に問題なのか?
それと比べると、lazyさや参照透明の恩恵は実感としてどのくらいなんだ?

33 名前:21 mailto:sage [2012/01/03(火) 20:15:26.32 ]
>>30
では私と扱っている分野が違うのだろう

私はそのような走り続けるアプリーションをHaskellで作った経験がゼロなので、
私(たち)のアプリで実感したHaskell利点が、貴方のタイプのアプリでも通用するのか、
全く分からない(いずれ必要になった時には当然検証するが)

申し訳ないが、私は私の経験でしかHaskellの利点や欠点を語れない
そちらの分野は私の勉強不足だ

分野が違うことによる意見の相違のようなので、
私はもうこの辺りでフェードアウトしたい

34 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:16:59.85 ]
>>31
そこで言う関数の規模とは、一体どういう意味での規模なのか。
俺自身が触ってきたコードから言うと、
筋のいいOOライブラリのメソッドと関数型言語の関数定義は
同じぐらいの粒度だと思う。行数も同程度。もちろんJavaじゃないぞ。


35 名前:デフォルトの名無しさん [2012/01/03(火) 20:25:45.57 ]
>>31
面白い述懐だな。宣言性、計算順序性、独立性、関数規模、デバッグ容易性・・・
「各宣言を独立に扱える」というのは、「関数間にまたがってまで計算順序を
意識する必要がない」とようないう意味だね?

36 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:46:59.65 ]
>>34
その筋のいいOOライブラリが何なのか教えてください

37 名前:21 mailto:sage [2012/01/03(火) 21:27:08.07 ]
>>35
> 「関数間にまたがってまで計算順序を意識する必要がない」とようないう意味だね?

こちらこそ、なるほどなと思わせる解釈だが、私の言いたかったことは半分正解

当然ながら計算を追うには複数の関数を跨がないといけない
関数Aの中で関数Bと関数Cを使っていたら、
関数Aの最終的な値が「計算される仕組み=計算過程」を知るには
関数Bも関数Cも計算を追わないと絶対にわからない

ただ、関数Bや関数Cは(関数Aのlet節やwhere節で宣言されたものでないかぎり)
普通は関数Aの環境からは独立しているはずだ
もちろん互いの環境とも独立しているはず

であれば、関数Bの計算は、関数Cの計算とは全く関係ないはずだ
参照透過性ゆえに「自動的に」そうならざるをえない

なので、たとえば関数Bのデバッグは関数Cとは独立して行える
これが「各宣言を独立に扱える」ということ

関数Aの計算過程を追うには関数Bや関数Cを跨ぐ必要があるが、
関数Bや関数Cの計算過程を追うには関数間をまたぐ必要がない
だから(私が言いたかったことに関しては)半分正解

ちなみに、関数Bの戻り値に関数Cを適用すればまたがるだろという意見もあろうが、
それでも関数Cを計算する仕組みは変わらない
関数Cを引数の値によって計算そのものを変える事もできてしまうが、
そこまで行くと筋の悪るすぎるHaskellプログラムだから論外だ

38 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:39:32.21 ]
まとめると
・参照透明性はすばらしい
・遅延評価は糞
ということでよろしいか

39 名前:21 mailto:sage [2012/01/03(火) 21:43:24.13 ]
>>34
> そこで言う関数の規模とは、一体どういう意味での規模なのか。

期待させたのなら申し訳ないが、大した意味は全く無い

言葉が足りなかったな
その関数の規模が小さいほど、みんなで「そろって」デバッグしやすい
というニュアンスで言いたかったんだ

貴方がOOの例で言った関数の規模ときっと同じ意味だ
中でどれほど長い式の計算をしているか、という程度の曖昧な意味だよ

一つの関数内で where 節などでたくさん内部関数を宣言してたりして式が大きいと、
その関数を複数人でデバッグするということは、現実的になかなか難しいからね
いくつかの外部の小関数に分けてあれば、それぞれの小関数をみんなでデバッグできる

もちろん、各小関数が独立しているからこそ、みんなでデバッグができる

40 名前:デフォルトの名無しさん [2012/01/03(火) 21:47:23.46 ]
>>37
基本的に了解なのだが、
>関数Aの中で関数Bと関数Cを使っていたら
この場合でも,関数Aの計算過程は関数Bのそれと関数Cのそれから
独立だよね?(細かい確認でスマンが)



41 名前:21 mailto:sage [2012/01/03(火) 22:03:55.69 ]
>>40
すまん、いつも言葉が足りなくて誤解を与えてしまうな

「関数Aの計算過程を知る」の定義によるだろうね

>>37 では、内部で使ってる関数の内容も含めて関数Aの計算過程と暗に定義していた
だから独立はしてなくて、関数Bや関数Cも知らないとね、と

内部の関数は含めず、純粋に関数Aの中での式を知るという定義なら、独立している
きっと >>40 はこちらの意味で受け取ったんだよね

42 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:24:45.46 ]
>>38
そんな簡単に分けられへん。

43 名前:デフォルトの名無しさん [2012/01/04(水) 08:21:01.96 ]
>>38 >42
というかコインの表と裏。

44 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 11:05:48.35 ]
スレを読みに来て腹減ってしまったがな。 スパゲティ食べたくなった。。。。

45 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 11:06:26.92 ]
だれか githubからスパゲティなhaskellプログラムさがしてくれ

46 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 11:15:45.18 ]
Agdaのsrc/full/Agda/Auto/以下がお勧め

47 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 11:23:18.51 ]
このなかで圏論に手を出してる香具師おる?

48 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 11:29:39.22 ]
最近出そうして打ちのめされた
基礎からやるならまず集合論でいいの?

49 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 12:13:15.78 ]
数学で集合論って言うと、ZFC、巨大順序数とかその辺だから、離散数学辺りから。
集合、位相、束、代数、グラフ、論理の初歩をまとめたような本。
列挙したのをちゃんと理解してないと圏論は歯がたたない。

例えば↓が網羅的で練習問題回答がしっかりしてるから独学に向いてる。
www.amazon.co.jp/dp/4274130053/
これじゃ初歩的すぎるというのなら推薦図書スレで、
自分の数学能力を話した上で相談したらどうか。

50 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 12:35:49.88 ]
>>49
あざっす
立ち読みしてみるわ



51 名前:デフォルトの名無しさん [2012/01/04(水) 13:12:29.45 ]
>>47
おるよ。なにか話してみてくれ。

52 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:51:46.30 ]
>>48
どの辺りで打ちのめされたのかによるよ

俺は
Conceptual Mathematics: A First Introduction to Categories
www.amazon.co.jp/dp/052171916X/

これを読んで、難しかったり、意味が分からなかったり、
納得できなかった部分に出会ったら、その都度他の資料に当たったり、
数学系の掲示板で質問したりしてた

とりあえず古典的な集合の意味が分かって、
単射・全射が分かって、モノイドが分かれば、
圏論の入門書はけっこう読み進められると思う
(圏論の入門書の中でも必要な集合論を必要最小限説明してるし)

抽象的すぎて「飽きる」可能性は大いにあるが

53 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:59:21.34 ]
集合論って前提がほとんどないから
勉強しはじめるには良い分野だと思う

54 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:06:02.43 ]
プログラミング出来るなら概念としては分かってるところも多いしね

55 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:16:07.06 ]
モナドとモノイダル圏って何か関係あるんですか?
join(T^2 -> Tな自然変換)がモノイドになっているっていう話ですか?

56 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:17:40.48 ]
ああ、モノイドは単位元もいるのか…

57 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 15:51:22.79 ]

           ______
          r〃〃〃 f7⌒ろ)
           l‖‖‖ ||   f灯
            |‖‖‖ ||   | |
            |儿儿儿._」⊥厶
           〔__o____o_≦ト、
.          i / ⌒  ⌒  ヽ )
          !゙ (・ )` ´( ・)   i/
          |  (_人__)    | \
          \  `ー'    /  / ー- 、
.          ,ィ(⊆≧リ≦⊇)〃   /     rク\
.       /   | ̄r少}¨ ̄〃   /    /′ ヽ
      〃 l   |  l| | l| 〃    /     /    └ヽ
     /    l  |l | |l/″   /      !  厂    \
    く,  Y   ! l」fレト!    /       | /        1
    丿  |   | 丿} じ’  /      | /         |
   /     l   | `¨      /      レ′        |

             真の思考停
    (在位 2009年9月16日〜2010年6月8日)

   民主朝の初代考停、言行不一致、虚言、脱税、
   そして外交において巨大な負の遺産を築いた。

58 名前:デフォルトの名無しさん [2012/01/04(水) 17:03:46.51 ]
>>52
>圏論の入門書はけっこう読み進められると思う
読み進んでもイミフと思われ

59 名前:デフォルトの名無しさん [2012/01/04(水) 17:06:48.83 ]
モナド則ってなんでこんなに遠回しな言い方するの?
[1] (return x) >>= f == f x
[2] m >>= return == m
[3] (m >>= f) >>= g == m >>= (\x -> f x >>= g)

60 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:25:19.49 ]
これ以上ないってほど直球のように見えるが



61 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:27:45.77 ]
>>59
それが「遠回し」と言えるのなら、
遠回しでないもっと簡単な表現に置き換えてみてほしい

62 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 18:17:34.27 ]
おれは集合論の順序完備化あたりでうちのめされた・・・orz

63 名前:デフォルトの名無しさん [2012/01/04(水) 20:55:50.83 ]
>>60
そうか。そういう人もいると思うが、通常そういう人は、「何でも理解しちゃう」
人が多いんだよね。
>>61
簡単な表現かどうか以前に、まずこれとは別の表現は見つかる?

64 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:10:30.32 ]
>>59 は「この表現が理解できない」のではなく、
「なぜ遠回しな言い方をするのか」と訊いている

これは、遠回しではない言い方を知っている上で、
そのような表現ではなく、なぜ敢えて遠回しにするのか、
という意味で訊いているように俺は解釈した

ならば、その遠回しではない言い方に置き換えて表現してみてはくれないだろうか

それとも、俺の解釈が間違っていたか?


ちなみに、俺は少なくともモナド則に関してはこの表現で理解できたから、
別の表現を探す気は起こらない

65 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:46:10.84 ]
具体例を知らないのに圏論だけやってもダメなんだ

66 名前:デフォルトの名無しさん [2012/01/04(水) 21:46:16.22 ]
father(son(x)) = x は遠回しに見える。それぐらいの意味だ。
後はなんちゅうことないことだ。

67 名前:デフォルトの名無しさん [2012/01/04(水) 21:53:17.25 ]
>>65
だけど圏論によい具体例があまりないんだ。
なにかよい例を知っているか?
圏の例は基本的だが,圏の圏の例がより実践的だと思うが。

68 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:53:23.57 ]
モナド則は、returnと(>>=)で>>59みたいに書くほかにreturnと(<=<)でも書ける

[1] return <=< x == x
[2] x <=< return == x
[3] (a <=< b) <=< c == a <=< (b <=< c)
[4] (a <=< b) . f = a <=< (b . f)

どっちがシンプルに思えるかは人に依るかも

69 名前:デフォルトの名無しさん [2012/01/04(水) 22:14:27.60 ]
>>68
こりゃますます常人には分からんな。
スマンが間単に読み方を教えてくれんかな?

70 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:18:57.72 ]
>>69
(<=<)はControl.Monadで定義されてるよ。定義は、
f <=< g = \x -> g x >>= f



71 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:42:02.17 ]
定義なんだからモナド則はこれっていう以上の何が必要なんかわからん。
遠回しもくそもないだろ。

72 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:43:16.38 ]
素直に、モナド則が理解できないから詳しく説明してほしい、と言えばいいのに

表現が遠回しだとか、それこそ遠回しに伺っても、期待する返事は来ないぞ

(まぁ、単刀直入に訊いても、期待する返事が来るとは限らんけど)

73 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:46:17.58 ]
この人は相変わらず質問がヘタだな

74 名前:デフォルトの名無しさん [2012/01/04(水) 22:59:11.16 ]
>>71 >>72
この人たちは定義というものはなにかを定義していさえすればよいものだと
思っているらしい。

75 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:02:28.21 ]
マジで何言ってんのお前

76 名前:デフォルトの名無しさん [2012/01/04(水) 23:03:18.65 ]
   ∧_∧   
 ( ´∀`)< ぬるぽ

77 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:06:15.65 ]
先月と、先々月の数学セミナーの圏論の歩き方におもいっきり載ってたろ・・・。

78 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:12:52.94 ]
いや同じものを定義するのにも分り安い方法とそうでない方法があるのは普通のことだろ

79 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:14:30.33 ]
>>66
それのどこが何に対して遠回しなのかを説明してくれ
そうすれば、君が >>68 の何に対して遠回しと感じているのか分かるかも知れん

father(son(x)) = x

これは、左辺にある x に対する2個の(この順の)変換が右辺と同等である
という事を示していると思う

このような意味を表すのに father(son(x)) = x を持ち出すのが遠回しと感じるのなら、
君ならどう式で表現するのだろうか?

80 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:24:29.25 ]
せっかく突っ込んで書いてくれたんだから読んでやれよ・・・。



81 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:34:44.98 ]
早くもっと簡潔で直接的なモナド則の書き方書けよ

82 名前:デフォルトの名無しさん [2012/01/04(水) 23:48:28.90 ]
>>79
>father(son(x)) = x
>これは、左辺にある x に対する2個の(この順の)変換が右辺と同等である
>という事を示していると思う
うん。だがそれはその式を単にそのまま読んだだけだと思うんだ。
なにが言いたいんだこの式は?何が言えてるんだこの式は?とは思わな
いかい?
まあそういうことなんだが、皆さんイライラしているようだし、この辺
で寝るよ。かまってくれてありがとう。

83 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:55:17.37 ]
f(g(x)) = xという形の等式が直感的に何を意味するかは慣れないと分かりにくい
でも一旦慣れれば問題なくなるし、
この内容を簡潔に表現するにはこの式しかないと思うようになる(f . g = idもあるけど)
モナド則も似たようなもんじゃね

84 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:09:23.77 ]
俺が分からないのはお前らのせいって言いたいだけじゃん。

85 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:22:26.47 ]
>>82
> だがそれはその式を単にそのまま読んだだけだと思うんだ。
> なにが言いたいんだこの式は?

全く逆だ

「x に対して2個の変換 son と father をこの順で適用したものは x と同等である」

という、たまたま今は日本語で表された 「意味」 が何よりも先に先にある
(この意味を人に伝えるには何かの言語で表す以外ないから、たまたま日本語で表した)

この意味を数式という言語で表せば father(son(x)) = x となる
この意味を英語という言語で表せば・・・
この意味をヒンドゥー語という言語で表せば・・・お任せする

モナド則も意味が先にあって、それをHaskellの式で表す方法のひとつとして >>59 がある
他にも >>68 の様に表す方法もあるし、もしその意味を日本語で表すなら・・・

ということだ

86 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:31:08.78 ]
もしかして数学の定義を使って証明したことがないじゃなかろうか?

87 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 03:04:58.01 ]
関手fmapと自然変換returnと自然変換joinが「モナド」になる
っていうのが一番簡潔で直接的なモナド則の書き方

>>= は \f->\g->join (fmap g f)によって定義できる二次的なもの

88 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 03:54:01.40 ]
[1] join . join == join . fmap join
[2] join . return == id == join . fmap return

89 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:48:38.07 ]
犬論で拳論でもいいけど、謙論を忘れずに。

90 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:52:37.50 ]
>>49
計算論 計算可能性とラムダ計算
買ってみようと思う。
他におすすめある?



91 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:55:33.27 ]
プログラミングの道具としての圏論ならばalgebra of programming一冊各種証明を手で追いながらみっちりやれば充分

92 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 15:20:01.29 ]
中古で六万かよ

93 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 15:49:55.57 ]
>>92
Amazon.com 本店(米)の中古はもっと酷い 916.21 ドル

でも、Amazon.co.uk なら中古が 20 ポンドで売ってる(国際便もあるみたい)

94 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:09:38.32 ]
大学講義の離散数学で単位ギリギリとった俺は>>49くらいがちょうどいいかな

95 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:47:12.97 ]
もしそれが恥ずかしくないのなら、>>49 でもやばいかも

96 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:49:28.01 ]
 ttp://blog.ezyang.com/2012/01/why-iteratees-are-hard-to-understand/

MITの学生さんだって。みな頑張れ

97 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:53:03.61 ]
>>91-3
どうせ大学の図書館探したら転がってるだろうから、みることは可能だろうよ。

98 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 18:37:14.15 ]
お前らは何百年同じ話を続けるつもりなんだ?

99 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 18:46:42.96 ]
あと1億年と2000年間

100 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 18:51:23.55 ]
いや、あと数年で終わらせるから待ってろ



101 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:17:34.36 ]
>>99
8000年過ぎた頃からもっと繰り返したくなった






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

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

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