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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/07(火) 21:24:26
haskell.org
http://www.haskell.org/

日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://shidot.dyndns.org/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/
Part4 http://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1149263630/

関連スレは>>2
関連書籍は>>3

・2chの仕様により、行頭の半角スペースは表示されません。
 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0181デフォルトの名無しさん2006/12/02(土) 14:32:53
>>180
インストール時の選択によって違う。
詳しくは>>70のgetRegsを読んでくれ。
0182デフォルトの名無しさん2006/12/02(土) 16:46:14
HKEY_LOCAL_MACHINE hKEY_LOCAL_MACHINE SOFTWARE\\Haskell
HKEY_CURRENT_USER  hKEY_CURRENT_USER  Software\\Haskell
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WinHugs
hKEY_CLASSES_ROOT hugs_haskell
hKEY_CLASSES_ROOT hugs_haskell

この4つ消してあとはフォルダごとゴミ箱つっこめばOKかな?
0183デフォルトの名無しさん2006/12/02(土) 18:18:11
>>182
>HKEY_LOCAL_MACHINE hKEY_LOCAL_MACHINE SOFTWARE\\Haskell
>HKEY_CURRENT_USER  hKEY_CURRENT_USER  Software\\Haskell
中身がhugsだけでないなら消すとまずい。
0184デフォルトの名無しさん2006/12/02(土) 18:28:39
あ、そっか
GHCとかもその下に含まれてるね

その下のHugsってのだけ削除すればいいか
0185デフォルトの名無しさん2006/12/02(土) 22:13:19
>>171
逆にその辺の知識を勉強したいと思った場合どこから手を付ければいいんだろう?
高校レベルまでしか数学知識ない状態で。
0186デフォルトの名無しさん2006/12/03(日) 08:22:32
Jacobの黄色い本なんかがいいんじゃないか
0187デフォルトの名無しさん2006/12/03(日) 21:24:57
>>185
現実的に言って働いている社会人だとほとんど不可能だと思う。
理由としては。
1.時間が馬鹿みたいに必要。(日常生活に確実に侵食してくる)
2.難しいのでモチベーションが続かない。(理系は視野が狭いというが狭い視野じゃなきゃやってられねぇ。)
3.自己流だと確実に変な方向に行ってしまう(数学基礎論にはまってしまってその考えから抜け出せなくなってしまうのがよくあるオチ。数学は記号論理学じゃない。)
0188デフォルトの名無しさん2006/12/03(日) 21:26:04
まともにやろうと思えばだけれど。
0189デフォルトの名無しさん2006/12/03(日) 21:32:09
>1.時間が馬鹿みたいに必要。(日常生活に確実に侵食してくる)
貯金が溜まりますねー
01901712006/12/03(日) 23:13:30
>>175

>>171

>haskell使うだけなら

という限定つき。
たとえば、チューリングマシン知らなくてもC言語は使えるようになるし。
むしろ、基礎理論をうまく隠蔽できないなら、プログラミング言語の設計としては失敗といえるかも。
0191デフォルトの名無しさん2006/12/03(日) 23:32:41
>>187
> 3.自己流だと確実に変な方向に行ってしまう(数学基礎論にはまってしまってその考えから抜け出せなくなってしまうのがよくあるオチ。数学は記号論理学じゃない。)

そんな奴みたことない。
それに、この分野、まだまだみんな自己流じゃないの。
数学や物理のように確立されたカリキュラムもないし。
0192デフォルトの名無しさん2006/12/04(月) 09:53:06
>>191
そこからは自己流だがそこまで行くための基礎的な部分までの話。
基礎ができないと応用はできない。
0193デフォルトの名無しさん2006/12/04(月) 15:20:35
GHCってhaskellで書いたソースをCに変換させてコンパイルさせているのでしょうか?
haskellソース→Cソース→アセンブラソース・・・
それとも直接アセンブラのソースに行くのでしょうか?
haskellソース→アセンブラソース・・・
0194デフォルトの名無しさん2006/12/04(月) 16:12:18
上のほう
でも当然読めるようなCじゃない
0195デフォルトの名無しさん2006/12/04(月) 16:15:20
場合によっては直接アセンブリを生成する。これは-fvia-Cと-fasmで制御できる。
0196デフォルトの名無しさん2006/12/04(月) 16:32:04
>>191
1ヶ月でできるお勧めカリキュラム

1週目 λ計算。とりあえずD∞ modelあたりまでやる
2週目 型理論。ざざっとSystem Fまでやる
3週目 圏論。1,2週目の理解をもとにCCC modelまで。
4週目 記号論理学。LKLJNKNJの規則をながめる。

この後は興味に応じて論文を読み漁ればok
0197デフォルトの名無しさん2006/12/04(月) 17:42:23
そのカリキュラム、相当ヒマで相当モチベーションの高い人間でも
こなすのが辛いような気がするんだが。
0198デフォルトの名無しさん2006/12/04(月) 18:10:44
まあ進度は時間と能力に応じて変わるかも。
でも、この辺の分野は親切な入門書もたくさんあるし、自己流の罠? にはまることもないと思う。
0199デフォルトの名無しさん2006/12/04(月) 20:24:18
社会人で独学で勉強していておかしな方向に行っている俺様が来ましたよ。

つーか。196は社会人なめとんのかい。
社会人の場合、一日にかけられる勉強時間でせいぜい30分とか
1時間だぞ。その時間をとれないことも多い。

しかも環境も劣悪で電車の中とか、仕事で疲れた状態だとか、あんまり
頭に入るような状況ではない。

こういう話を聞くとまた、過酷な勤務の底辺DQNプログラマか、と思う奴も
いるだろうけど(DQNなのはあっているが)、社会人で9時6時で帰れるような
職場はありません。9時ぐらいまでで帰れる職場でも同じで、それは一般的
には楽な職場と言われている。

しかもカリキュラムがいきなりλ計算。
高校卒業程度の数学力と言っているのにλ計算以前に勉強することが
あるだろうと小一時間...。つーか、記号論理学とかはλ計算以前に
やるべきだと思うがどうか。

むしろ独習の場合、自分のペースで学習が進んでかつ理解度を試される
ことがないので、解った気になって先に行ってしまうのがあらぬ
方向に進んでしまう気がするがどうか。早くカリキュラムを進める
理解力より、ゆっくり物になるまで粘る忍耐力の方が重要な気がするけど、どう。


0200デフォルトの名無しさん2006/12/04(月) 20:47:03
>>196
やってみます。お薦めの本を教えてください。洋書でもいいです。
0201デフォルトの名無しさん2006/12/04(月) 21:14:18
来週からλ計算開講だお
0202デフォルトの名無しさん2006/12/05(火) 01:18:01
>>201
頼むぞホント
高卒でもわかるように説明できないようじゃ価値ねーからな
0203デフォルトの名無しさん2006/12/05(火) 01:31:58
>>201
おい、何レス使うつもりだ
0204デフォルトの名無しさん2006/12/05(火) 02:50:07
>>194,195
有り難う。
んじゃ、Cで関数書いて呼び出したり
アセンブラで書いた関数をCで呼び出して
その関数をさらにhaskellで呼び出すことも可能なのでしょうか?
0205デフォルトの名無しさん2006/12/05(火) 04:12:04
>>204
もちろんできる。
そもそもForeign Function InterfaceというのがHaskell98の追補にあって、
たぶん全ての実装で利用できる。
http://www.cse.unsw.edu.au/~chak/haskell/ffi/
0206デフォルトの名無しさん2006/12/05(火) 04:35:51
ふーん、そこまで機能がそろっているのに
なぜ誰もOSを書こうとしないの?
アセンブラとCが使えるならOS作れそうな気が
するのだけれど。
0207デフォルトの名無しさん2006/12/05(火) 04:52:36
検索したら見付かったが。

http://programatica.cs.pdx.edu/House/
>House is a demo of software written in Haskell, running in a standalone environment.
0208デフォルトの名無しさん2006/12/05(火) 14:54:22
そういう車輪の再発明っていうか、単に言語間の移植は、作ってるうちに空しくなるんだよ
0209デフォルトの名無しさん2006/12/05(火) 21:13:27
ghcでアセンブラの勉強できないの?
02101872006/12/06(水) 11:24:57
>>199
>つーか、記号論理学とかはλ計算以前に
>やるべきだと思うがどうか。
やるとしてもかなり初歩の部分だけでいいと思う∀、∃、とかの意味をちゃんと「理解して使える」ようになればいいと思う。
あんまり込み入ったところは使わないしおそらく必要性もないと思う。
というかかなりごちゃごちゃしていてやる気がしないはず。(俺はしなかった)

>むしろ独習の場合、自分のペースで学習が進んでかつ理解度を試される
>ことがないので、解った気になって先に行ってしまうのがあらぬ
>方向に進んでしまう気がするがどうか。早くカリキュラムを進める
>理解力より、ゆっくり物になるまで粘る忍耐力の方が重要な気がするけど、どう。
理解度を試されるというところもそうなのだけれど、根本的に数学を理解するということを勘違いしていることが多い(勘違いしていました。)
数学は語学です。

おそらくもっともいい方法は圏論勉強会に一回だけでも出てしまうのがいいと思う。(ちなみに俺は行った事ない)
なんとなく方向性はつかめるんじゃないかと勝手に思う。
0211デフォルトの名無しさん2006/12/06(水) 18:31:09
>>210
察するに、あなたは「自己流」でなんとかなったんじゃないの?
02121992006/12/06(水) 20:00:59
> あんまり込み入ったところは使わないしおそらく必要性もないと思う。
> というかかなりごちゃごちゃしていてやる気がしないはず。(俺はしなかった)
こういうところで手を抜くと、後々しょうもないところで限界がくる
というか、学習に広がりがなくなると思うのでやった方がいいと思うけど
どうなんでしょう。それこそ独学の罠なんじゃないんでしょうか。

計算機科学の勉強は何も関数型言語だけじゃなく、論理学がつかわれている
データベース、公理的意味論、モデル検査などなど色々面白そうな
トピックスがあるのでこれらを楽しめないのは損...だと思うんだけど。
当然、関数型言語の勉強をするにも論理学はあった方がいいと思うんだけど。
0213デフォルトの名無しさん2006/12/06(水) 20:07:34
そういう意味では、記号論理学は語学、だな
0214デフォルトの名無しさん2006/12/06(水) 20:27:50
もうちょっとわかりやすくて楽しそうなスレになりませんか?
0215デフォルトの名無しさん2006/12/06(水) 20:33:56
論理学だの計算機科学だのそんなことはどうでもいい
ここはム板で、Haskellでプログラミングすることに関するスレだ。
関係ない話は情報学板・数学板でやれ
0216デフォルトの名無しさん2006/12/06(水) 20:46:31
以後、ラムダ計算とか圏論とかの話題は禁止な
0217デフォルトの名無しさん2006/12/06(水) 21:41:41
そんなことよりラムダ計算とか圏論とかの話しようぜ
0218デフォルトの名無しさん2006/12/06(水) 21:45:30
そんなことより鮫の話しよーぜ
0219デフォルトの名無しさん2006/12/06(水) 21:46:14
そんなことよりオセロやろーぜ
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
0220デフォルトの名無しさん2006/12/06(水) 22:03:09
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│ λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
0221デフォルトの名無しさん2006/12/06(水) 22:04:34
>>215
そんなに固いこといわなくても。
理論よりの話題が多いのは、そっちに興味のある住人が多いからだろう。
そもそも過疎スレで、Haskellでのプログラミングについてだって
盛り上がっているとはいえない(いったいHaskellでコード書いてる奴が
どれくらいいるのか)んだから、無理に話題をしぼってもいいことはないと思う。

もちろん、興味のない議論が長々と続くのは不愉快だと思うが、
その時は自分でネタを出すくらいの勢いで。
0222デフォルトの名無しさん2006/12/06(水) 22:05:34
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│λ│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
0223デフォルトの名無しさん2006/12/06(水) 22:06:36
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │ &│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│λ│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
0224デフォルトの名無しさん2006/12/06(水) 22:07:36
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│&│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
0225デフォルトの名無しさん2006/12/06(水) 22:11:40
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│●│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│&│  │  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
0226デフォルトの名無しさん2006/12/06(水) 22:14:48
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│&│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│●│λ│&│  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│&│  │  │&│  │λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
0227デフォルトの名無しさん2006/12/06(水) 22:19:46
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │  │  │λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│&│  │  │  │┃  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃    λ...
┃│  │  │λ│●│λ│&│  │  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │●│&│  │  │&│λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃   λ...
┃│  │  │  │  │  │  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃    λ...
┗━━━━━━━━━━━━━━━━━┛
0228デフォルトの名無しさん2006/12/06(水) 22:24:15
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │ λ...  λ...         λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  λ...  λ...          λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  λ...  λ...        λ...      λ...  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │ λ...     λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃  λ...
┃│ λ...    λ  λ   λ...
┃├─┼─┼─┼─┼─┼─┼─┼─λ...
λ...     λ...λ... λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃  λ...
┃│  │  │ λ...    λ...    λ...
┃├─┼─┼─┼─┼─┼─┼─┼λ... λ...
┃│  λ...     λ...    λ...
┃└─┴─┴─┴─┴─┴─┴─λ...   λ...
┗━━━━━━━━━━━━━━━━━┛
0229デフォルトの名無しさん2006/12/06(水) 22:25:07

鮫って魚が交尾するから鮫って書くんだぜ
0230デフォルトの名無しさん2006/12/06(水) 22:25:11
>>222-228
結局はλってこったな
0231デフォルトの名無しさん2006/12/06(水) 22:27:48
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │∃│∃│  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│∃│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│∀│  │  │●│  │∀│  │  │λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │∀│  │●│&│  │  │  │┃  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃    λ...
┃│  │∀│λ│●│λ│&│  │  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │●│&│  │  │&│λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ∀ λ...
┃│∃│  │  │  │∀│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │∃│  │∃│  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃    λ...
┗━━━━━━━━━━━━━━━━━┛
0232デフォルトの名無しさん2006/12/06(水) 22:30:32
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │∃│∃│  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │∨│∃│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│∀│  │  │⇒│  │∀│  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │∀│  │∨│&│  │  │  │┃  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃    λ...
┃│  │∀│∧│∀│∧│&│  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │⇒│&│  │  │&│  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃  λ...
┃│∃│  │  │  │∀│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │∃│  │∃│  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃    λ...
┗━━━━━━━━━━━━━━━━━┛
0233デフォルトの名無しさん2006/12/06(水) 22:40:21
λがいなくなってすっきりしたな
0234デフォルトの名無しさん2006/12/06(水) 22:56:57
ParserCombinator とかだと簡単過ぎて、
文章書いてる、または、データ入力の仕事している気分で全く面白くない。
0235デフォルトの名無しさん2006/12/06(水) 23:20:40
parsecに浮気したこともあったが、結局左再帰の処理が
鬱陶しくなってhappyに戻った。
0236デフォルトの名無しさん2006/12/08(金) 00:37:39
>>211
ならなかった。それ気づいたときなんか毎日泣いた。
だからなんか粘着気味にレスしてる。

>>212
記号論理学は(偏見かもしれないが)直感が効かない。
数学でも直感てすごく大事。
あれはほぼ超絶テクニックのアルゴリズムの塊だから
やっても面白くないと思う。
最初から直感の聞かない数学の分野やっちゃうと
それが数学だと思っちゃう。まぁそれも確かに数学
なんだがあれは自分の人生をそれにすべて費や
しているような人がやるもんだ。
たとえば、基礎論とかゼータ関連ね。

煽りとかじゃなく>>212はブルバキって知ってるか?
0237デフォルトの名無しさん2006/12/08(金) 00:57:14
ん。なんかよく読むと趣旨がわからなくなっているな。

まぁ要するに>>212が必要としている論理学のレベルは
ほかの分野の数学やっていれば自然に身につく。多分。
だったらほかの直感の効くわかりやすい分野から始めた
方がいいんじゃないかと。
あえて記号論理学みたいな諦める可能性90%なやつから
始める必要なんてなかろう。必要性が出てきたときに勉強
すればいいんじゃないかと。
0238デフォルトの名無しさん2006/12/08(金) 01:11:18
すれ違い
いい加減ウザい
0239デフォルトの名無しさん2006/12/08(金) 01:16:56

圏論理解するのにどんくらいかかる?
高卒で数IIもわからんし、基本情報処理もさっぱり
0240デフォルトの名無しさん2006/12/08(金) 01:22:19
基礎も何も無いのに、かっこよさそうだからと飛びつくような人間は、
どんな分野も一生理解出来るようにはならんよ。
0241デフォルトの名無しさん2006/12/08(金) 01:25:49

くっだらねーレスしてる暇あったら馬鹿にでもわかるような説明考えろよ
0242デフォルトの名無しさん2006/12/08(金) 02:02:34
>>239
日本に圏論を理解してると自覚している人が誰もいないのに?
0243デフォルトの名無しさん2006/12/08(金) 02:03:19
>>239
人に依るとしか言えない。取りあえず入門の第一歩
http://d.hatena.ne.jp/m-hiyama/20060821/1156120185
を読んでどう思ったか教えてくれ。
02441992006/12/08(金) 04:14:43
ブルバキの名前も知らないと思われているところをみると、
本当に何も知らない人なんじゃないかと思われているような。

たぶん、想像しているレベルの論理学のイメージはそんなに
変わらないはずだよ。

自分もそんなにディープな論理学の知識はいらんと思うが
(それはやぶ蛇)、自然に覚えるのでなく、それ用の入門書
ぐらい嫁というスタンスなんだが。俺もそれ以上はやってない。

> あえて記号論理学みたいな諦める可能性90%なやつから
どこまでやって諦める可能性90%というのか知らないけど。
言われてみればそんなに簡単ではないのは確かにそうだな。
0245デフォルトの名無しさん2006/12/08(金) 04:41:44
まあHaskellスレに来るような人にとってはλ計算の方が
記号論理学より入りやすいんじゃないかな。
プログラム言語だし。

わかってみれば浅い話でも、
いきなりシーケント計算とかみると投げ出すでしょフツー
0246デフォルトの名無しさん2006/12/08(金) 11:29:00
>ブルバキの名前も知らないと思われているところをみると、
>本当に何も知らない人なんじゃないかと思われているような。

名前だけじゃなくてその集団の目指したこととその失敗のことを
言っているんじゃないか。
0247デフォルトの名無しさん2006/12/08(金) 18:32:55
ブルバキについて言及する奴の99%は、その著書を1ページも読んでない。
0248デフォルトの名無しさん2006/12/08(金) 20:30:21
数学原論をまともに読む気するか?
0249デフォルトの名無しさん2006/12/08(金) 21:02:59
>>242
そうなの?
圏論勉強会は?
0250デフォルトの名無しさん2006/12/09(土) 00:12:51
conceptual mathematicsにはファンクタも出てこないじゃないですか。
ってamazon(us)で批評されてたけど、
実際、Haskellプログラミングや関連論文読む力付ける目的に合ってるの?
結構長いし、ちょっと不安す
0251デフォルトの名無しさん2006/12/09(土) 00:52:06
!!ファンクタ出てこないの?
でも、いまつづいてる連載ってfmapを結構頻繁に使ってない?
0252デフォルトの名無しさん2006/12/09(土) 01:30:37
>>250
俺も conceptual mathematics をざっと読んだけど出てくるのは product, sum, exponetial まで。
でも具体例でじっくり書いてあるので足元を固めて自力をつけるのにはよいかもしれない。
理解してたつもりでも実際練習問題解くとむずかしいものも多い。
取りあえず浅く知って(真に理解したという意味ではないよ)早く先に進みたいという人には向かない。
02532522006/12/09(土) 01:50:51
補足
equalizer も確かでてきてた。
「自力をつける」は「地力をつける」だった。
0254デフォルトの名無しさん2006/12/09(土) 03:02:44
そういえば圏論勉強会の結果みたいなホワイトボードの写真あるけど
ほとんど説明無い。ほとんど有向グラフの図ばっかり。
あの図だけ見て何が何をやっているのか理解している人いるの?
02552522006/12/09(土) 03:37:30
>>254
同じテキスト読んでればボートの図だけで大筋何を言わんとしているかは想像できる。
0256デフォルトの名無しさん2006/12/09(土) 12:29:51
素直に圏論の基礎読めば良いんじゃね。
なんでわざわざ洋書にこだわるんだ。
0257デフォルトの名無しさん2006/12/09(土) 12:32:39
そんなもんオマエ…マクレーンが読めるようならこんなとこにおらんやろ
0258デフォルトの名無しさん2006/12/09(土) 13:36:44
なんだか不穏な空気が流れてきたな・・・。
もうこの話し止めほうがいい気がしてきた。
0259デフォルトの名無しさん2006/12/09(土) 13:37:35
さすがにもはや Haskell から遠ざかりすぎだしな
0260デフォルトの名無しさん2006/12/09(土) 13:45:07
Haskellプログラミングでは圏論をあまり意識しなくても良くなっている。
これ以降圏論の話は数学板か情報学板でするように。
0261デフォルトの名無しさん2006/12/09(土) 15:00:13
>>258
けんのん?
0262デフォルトの名無しさん2006/12/09(土) 19:57:47
>>260
いや。ファンクタだけは理解しておいたほうが良いんだよ。
fmapがちゃんとつかえるのと使えないのとでは結構違いがある。
liftMも同じく。
0263デフォルトの名無しさん2006/12/09(土) 20:03:31
>>262
圏論を理解していなくても使える。
0264デフォルトの名無しさん2006/12/09(土) 20:12:14
使い方を間違える。
0265デフォルトの名無しさん2006/12/09(土) 20:20:00
圏論を理解していないとfmapがちゃんと使えないって例えばどんな場合?
0266デフォルトの名無しさん2006/12/09(土) 20:41:36
>>261
ふおん
0267デフォルトの名無しさん2006/12/09(土) 20:53:03
なんていうか読みづらくなる。

使い方を間違えるって言うのはおかしかったな、すまん。
0268デフォルトの名無しさん2006/12/09(土) 21:06:54
ふと思ったんだが、fmapとliftMをHaskellで日常的に
使ってますって人ってどれくらいいるもんなんかな?

連載では多用しているけど。
0269デフォルトの名無しさん2006/12/09(土) 21:09:28
つまり、理想的な書き方と比べて意味的には同等だけど
読みづらい書き方になる、ってことか。

どっちにしても例が欲しい。

>>268
fmapは使わないけどliftMは日常的に使う。
0270デフォルトの名無しさん2006/12/09(土) 21:20:16
例・・・。そうだな。極端な例だと
`fmap`,`liftM`みたいに中間演算子的に使われると
どういう意図でそれをつかっているのか意味がとれない。

あとは、できるだけ
たとえば
calc :: a -> a
という関数があったらIOモナド用に
calcIO :: IO a -> IO a
calcIO = fmap calc
みたいに使ってもらったほうが構造だけは同一で元となっている
カテゴリーだけが違うということが明確になっていいんじゃないかと
思っている。

うーん。うまく伝わっただろうか・・・。
というかあまりいい方法じゃないのかなとか思ってきた・・・。
0271デフォルトの名無しさん2006/12/09(土) 21:29:28
なるべく根本的な関数定義はラムダ計算のカテゴリー内で
やってしまって後はカテゴリーごとにfmapするなりliftさせるなり
したほうが再利用できるようになるし。

sample :: a -> IO a
なKleisli射はなるべく作らない方向性でいくべきなんじゃないかって。

モジュール化も損なわれるんじゃないかと。
でもそこまでいってしまうと作れなくなってしまうというジレンマに陥って
しまうから・・・。どうなんだろうねぇ。。
0272デフォルトの名無しさん2006/12/09(土) 21:47:36
>>270
レスありがとう。

>`fmap`,`liftM`みたいに中間演算子的に使われると
>どういう意図でそれをつかっているのか意味がとれない。
これは俺も時々やるんだが、気持ち悪いと感じるのはたぶん分かった。
圏論の観点からはfmapは(射に作用する)単項演算であって
二引数関数のように使うのは不自然だ、ということか。(素人なので間違ってたら教えてくれ)

このスタイルを弁護しておくと、Haskellではあらゆる場合について
(g f) x

f `g` x
が等しいので、後者を見た読者は前者を見たのと同じように理解することが期待されている。
だから、両者を単純に字面上のおさまりに基づいて使い分けることができる、という考え方が
あり得ると思う。例えば f x の代わりに f `id` xと書くのがそんなに変だろうか。
加えて、それを言い出すと(>>=)だって圏論的には一引数の演算なんじゃないか、とか。

calcの例は理解できなかった。せっかく説明してもらったのにすまん。
0273デフォルトの名無しさん2006/12/09(土) 22:01:34
>>271
それは例えば標準入力からCSV形式のデータを読みたいときに、
getCSV :: IO [String]
のようなものをgetChar/getLine/getContentsを使って書くよりも、
parseCSV :: String -> [String]
を用意してユーザ側でfmap parseCSV getContentsとさせた方が良い、
という理解でおk?
それなら多くのHaskellユーザが経験的にやってることだと思うんだが。
0274デフォルトの名無しさん2006/12/09(土) 22:19:06
>272

>圏論の観点からはfmapは(射に作用する)単項演算であって
>二引数関数のように使うのは不自然だ、ということか。(素人なので間違ってたら教えてくれ)

その通り。というかそう自分としては解釈している、というほうが適切かな。
人によっては他の翻訳もありうると思う。

>このスタイルを弁護しておくと...

そういうスタイルがあることは最近知った。
前スレで出てきたLaw and Order in Algorithmicsってpdf内が
そういう流儀だったしおかしくはない。
でも、個人的に同一カテゴリー内の射(a -> a, IO a -> IO a)
なら「有り」だとは思うけど、fmapとliftMの場合そうやっちゃうと
ファンクタとかリフトって概念を持ち出す意味がなくなる。

>加えて、それを言い出すと(>>=)だって圏論的には一引数の演算なんじゃないか、とか。

圏論的には(>>=)は概念的にfmap,liftMの持つ概念と別種。
(といいつつそこらへんはよくわかっていないからどうともいえない
というのが本音。別種であるのは確か)
0275デフォルトの名無しさん2006/12/09(土) 22:23:20
>calcの例は理解できなかった。せっかく説明してもらったのにすまん。

>圏論の観点からはfmapは(射に作用する)単項演算であって

ということなんだけどちょっと例が少なかったか。
(というか勝手な見解だからあんまり惑わされないでくれ)

というわけでもっと例をあげると
calcMaybe :: Maybe a -> Maybe a
calcMaybe = fmap calc

calcList :: [a] -> [a]
calcList = fmap calc

calcF :: F a -> F a
calcF = fmap calc   Fは任意のFunctorクラス。

みたいなかんじに使えないかと。
・・・でも、やっぱり適用できる場面はそんなに無いか・・・な。

>>273
そういうこと。そしてそれがファンクタの概念。
経験的にわかっていることならこの際明確にしてしまおう。
0276デフォルトの名無しさん2006/12/09(土) 22:25:37
なんかえらそうに書いてしまったが
これはすべて個人的な勝手な解釈だ。
0277デフォルトの名無しさん2006/12/09(土) 22:41:30
なんかレスくれ。いろいろと穴はあると思うし。
0278デフォルトの名無しさん2006/12/09(土) 23:04:44
>>275
>みたいなかんじに使えないかと。
つまり、IOならIOについて(fmap calc)をひとかたまりとみなすべきであり、
そういうスタイルを奨励するためにcalcIOという名前を付ける、ということか。逆に
do x <- a; b (calc x)
のようにcalcの適用をdo式中に散逸させたりすると、
この構造がわかりにくくなるので良くない、と。
ただ、相変わらずこのように書くことの現実的利益がわからない。
>構造だけは同一で元となっている
>カテゴリーだけが違うということが明確になっていいんじゃないかと
>思っている。
の部分。

>経験的にわかっていることならこの際明確にしてしまおう。
もちろん明確にするのは価値があると思うし、そういうのは
個人的に好きな方向性だけど、もともとの議論に関して
「圏論を知らないとHaskellを使うのにどれくらい支障があるか」という点については、
はっきりさせておきたかった。俺としてはHaskelll(のような言語)が
真に一般に普及してほしいと思っているので、経験だけではカバーできない
重大な困難があるかどうかが気になった。
0279デフォルトの名無しさん2006/12/09(土) 23:52:51
>>278
>つまり、IOならIOについて(fmap calc)をひとかたまりとみなすべきであり、
>そういうスタイルを奨励するためにcalcIOという名前を付ける、ということか。

いや、そこまで強くは言っていない。名前付けたのはわかりやすくするためで
>>273みたいな名前付けない使い方が一般的だと思う。
というか経験的にすでにわかってることなんだと思う。

>ただ、相変わらずこのように書くことの現実的利益がわからない。

考えを整理できるとかそういう部類で現実的利益といわれると無いね・・・。

>「圏論を知らないとHaskellを使うのにどれくらい支障があるか」という点については、
>はっきりさせておきたかった。俺としてはHaskelll(のような言語)が
>真に一般に普及してほしいと思っているので、経験だけではカバーできない
>重大な困難があるかどうかが気になった。

Haskell使用するというレベルでは圏論の知識の有無による
困難は表面的には無い。が根源的には結構困難があると思う。
おそらく人のコードを読むという段階であらわに出てくるハズ。
fmapにしたってファンクタの概念をつかって圏論チックな考え方で
使おう思っている人と、そうじゃない人だと使い方が違う。
そういうのが積み重なって人によってはその書き方の意図が
読めないコードというのが出てくると思う。
そういう意味では結構困難がある。
まぁ要するにコーディングスタイルの問題。
圏論的なものを取り入れたHaskellコーディングスタイルを確立する
のかあくまで経験的なコーディングスタイルを確立するのか。

うーむ。なんだかグダグだになってしまった。
とりあえずfmap,liftMは便利じゃね?ということを
最初は説明したかったんだがものすごく言葉足らずでスマン。
0280デフォルトの名無しさん2006/12/10(日) 00:39:38
>>279
「現実的利益」なんて嫌らしい言い方をしたが、ようするに
「それで何がうれしいのか」を聞きたかっただけだった。
「考えを整理できる」というので十分。
>考えを整理できるとかそういう部類で現実的利益といわれると無いね・・・。
圏論的な考え方を身につけた人にとって考えを整理しやすい書き方、ということでいいだろうか。

>Haskell使用するというレベルでは圏論の知識の有無による
>困難は表面的には無い。が根源的には結構困難があると思う。
>おそらく人のコードを読むという段階であらわに出てくるハズ。
いいたいことはたぶん分かった。もちろん実感として分かるわけじゃないので
自信を持って理解したとはいえないが。
俺としては、「表面上」支障がなければそれで十分だと思う。
例えばライブラリを提供する/使うだけならスタイルの不一致は問題にならないし。

しかし冷静に考えると、表面上支障がないというのは誰に聞くまでもなく俺が
身を持って知っていることだった。これじゃ何が聞きたかったのか分からん。
結局聞きたかったのは「圏論ってそんなにすごいの?」だったような。
ぐだぐだ

>とりあえずfmap,liftMは便利じゃね?ということを
>最初は説明したかったんだがものすごく言葉足らずでスマン。
とんでもない。言葉の通じない相手に長々付き合ってくれたことに感謝。
■ このスレッドは過去ログ倉庫に格納されています