1 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 16:30:50.85 ] 関数型プログラミング言語 Haskellについて語るスレです。 本家サイト(英語) haskell.org www.haskell.org/ 前スレ 関数型プログラミング言語Haskell Part24 toro.2ch.net/test/read.cgi/tech/1382705669/
2 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 16:31:37.45 ] 過去スレ一覧 23) toro.2ch.net/test/read.cgi/tech/1376111807/ 22) toro.2ch.net/test/read.cgi/tech/1364009659/ 21) toro.2ch.net/test/read.cgi/tech/1358702176/ 20) toro.2ch.net/test/read.cgi/tech/1350428908/ 19) toro.2ch.net/test/read.cgi/tech/1340760070/ 18) toro.2ch.net/test/read.cgi/tech/1331902463/ 17) toro.2ch.net/test/read.cgi/tech/1325510368/ 16) toro.2ch.net/test/read.cgi/tech/1317958045/ 15) hibari.2ch.net/test/read.cgi/tech/1310199414/ 14) hibari.2ch.net/test/read.cgi/tech/1299385928/ 13) hibari.2ch.net/test/read.cgi/tech/1286706874/ 12) hibari.2ch.net/test/read.cgi/tech/1272536128/ 11) pc12.2ch.net/test/read.cgi/tech/1252382593/ 10) pc12.2ch.net/test/read.cgi/tech/1231861873/ 09) pc11.2ch.net/test/read.cgi/tech/1211010089/ 08) pc11.2ch.net/test/read.cgi/tech/1193743693/ 07) pc11.2ch.net/test/read.cgi/tech/1174211797/ 06) pc11.2ch.net/test/read.cgi/tech/1162902266/ 05) pc8.2ch.net/test/read.cgi/tech/1149263630/ 04) pc8.2ch.net/test/read.cgi/tech/1140717775/ 03) pc8.2ch.net/test/read.cgi/tech/1076418993/ 02) pc2.2ch.net/test/read.cgi/tech/1013846140/ 01) pc.2ch.net/tech/kako/996/996131288.html
3 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 16:32:39.80 ] 関連サイト (英語) Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版) learnyouahaskell.com/chapters (以下、日本語) Haskell - Wikipedia ja.wikipedia.org/wiki/Haskell Haskell入門 5ステップ - HaskellWiki (本家内、日本語入門セクション) www.haskell.org/haskellwiki/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97 Programming in Haskell www.sampou.org/cgi-bin/haskell.cgi HaskellJP wiki wiki.haskell.jp/ Haskell のお勉強 www.shido.info/hs/ Haskell Programming www.geocities.jp/m_hiroi/func/haskell.html
4 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 16:33:57.17 ] 関連書籍一覧 (アマゾン米国、主に洋書) www.amazon.com/s/rh=n:283155,n:3839,k:Haskell&ie=UTF8 (アマゾン日本、主に和書) www.amazon.co.jp/s/rh=n:492352,k:Haskell&ie=UTF8
5 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 17:17:34.17 ] 原発について語るスレはここですか?
6 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 17:46:38.15 ] 【重要】 hogeは禁止します、使用しないでください。 万が一hogeが書き込まれても、スルーしてください。 相手にするとあなたも荒らしと同じ扱いになります。 なお、hogeはNGワードに追加しておくことが強く推奨されています。
7 名前:デフォルトの名無しさん [2014/02/25(火) 18:46:38.55 ] Haskellって既に周回遅れ 今はScalaで次はJuliaだよ!! まあOCamlは2周遅れ Python、Rubyは3周遅れだからまだマシだが あ、Java,Cの一身などは土方専用ってことで
8 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 18:55:24.22 ] 成立時期の話かな? HaskellってRubyやPythonより古いよね OCamlはRubyと同じくらいか
9 名前:デフォルトの名無しさん [2014/02/25(火) 19:07:32.81 ] ここだけの話、セシウムを浴びると若返るんですよ。今反原発で盛り上がってるでしょ? あれ、本当の理由はセシウムによる若返りを医療関係者が阻止しようとしているんですよ。 だって、みんなが若返ったら医者は商売あがったりでしょ?
10 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 19:55:20.96 ] Haskellは昔から >>7 みたいな奴の声に安易に流されず、 ブレずに進化してきてるから好きだ
11 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 20:10:26.83 ] Data.Function.fix 関数は何のためにあるのでしょうか。 どう使うのでしょうか。 fix :: (a -> a) -> a fix f = let x = f x in x
12 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 20:17:14.12 ] 再帰する関数を、それ自身には再帰的定義を含まずに定義するために使う。 Yコンビネータのようなもの(ないし、そのもの)。
13 名前:デフォルトの名無しさん [2014/02/25(火) 20:17:35.74 ] >>11 ループを書きたいけどletやwhereを書くのすら面倒なときに使う flip fix (0::Int) $ \loop i -> do putStrLn $ "total " ++ show i n <- readLn if n >= 0 then loop $! n + i else return ()
14 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 20:56:20.42 ] >>9 マイクロ波を加え異常な殺人放射線として利用するわけだ。この装置を起こさせる要素が損傷を放射能汚染と精神病院精神病院精神病院では、周囲が残る。 内部被ばくでは少量の日常生活や人には、事故の開発がされましたが効果としては実用段階には至っていない。
15 名前:デフォルトの名無しさん mailto:sage [2014/02/26(水) 01:42:50.08 ] >>9 東電の放射性物質を東京にまいて、オリンピック選手を被曝させて元気にさせる運動に参加しよう!! 海外のみんなにも宣伝しなくちゃ!
16 名前:デフォルトの名無しさん mailto:sage [2014/02/26(水) 08:51:53.08 ] キチガイレスにも負けず自演、えらいぞ
17 名前:デフォルトの名無しさん [2014/02/26(水) 23:11:08.77 ] 狂気を感じるスレッドだな
18 名前:デフォルトの名無しさん [2014/02/28(金) 00:35:09.34 ] ガスの輸入、現在高い値段で買いすぎ、交渉努力で安くするべき、とかいってる人がいるけど、 どうみてももっとガスをたくさん買わなきゃいけなくなって、しかも原発という選択肢もなくなるわけだから、 もっと足元みられるようになるに決まってるだろう…。 原発は利権とかいうのに、自然エネルギー利権はとはいわないんだな。
19 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 01:17:22.84 ] ファンクターわかんない
20 名前:デフォルトの名無しさん [2014/02/28(金) 01:22:37.55 ] >>18 ガスを採掘して、ガスを精製して、ガスを運搬してるのが日本企業で、日本がエネルギー輸出国だということを考えると、足元を見てるのは日本人だから問題ありません もっと言うと、半独占企業が牛耳っている以上、電力の値段で一番足元を見てるのは日本の電力会社です 除染をするとか税金を投入して赤字を埋めるという前提を抜かすと、原発にあるのは利権ではなく債務です 補助金がなければ赤字という点は自然エネルギーも一緒であり、利権など存在しようがありません
21 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 02:13:39.54 ] ここHaskellスレでいいのか?
22 名前:デフォルトの名無しさん [2014/02/28(金) 03:10:30.98 ] >>21 =放射脳
23 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 06:28:41.11 ] >>19 Maybeかリストあたりをファンクターの具体例として扱ってみるのが最初は理解しやすいと思う
24 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 06:36:19.99 ] そもそも型クラスが理解出来てないケースが多そうなんだよな instance Functor Maybe where ... instance Functor (Either a) where ... なぜEither aになるか分かりますか?的な
25 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 06:54:11.49 ] >>19 ファンクターの何がわからないのか、もっと具体的に質問してくれ それとも、何を質問したらいいのか分からないのか?
26 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 09:55:40.87 ] 原発利権に洗脳されたキチガイが住み着いてるのか
27 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 12:59:13.55 ] そういう話がしたいお前の自演にしか見えんがな
28 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 13:26:00.62 ] インライン展開と書こうとしてインラン展開とタイポしてしまったので今日は淫乱記念日
29 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 13:58:35.87 ] インラインって感じるぅ 。ρ。 ρ mドピュッ C|.| /⌒⌒⌒ヽ/~ ̄ ̄ ̄ ̄ヽ 〜 /⌒ヽ⌒ヽ___ | ∴ヽ 3 ) 〜 ./ _ ゝ___)(9 (` ´) ) 〜 / 丿ヽ___,.───|彡ヽ へ へ| 〜 _/ ) ( Y ̄ ̄ ̄ ̄) 〜 (__/
30 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 16:21:01.23 ] みじめな一人連想ゲーム
31 名前:19 mailto:sage [2014/02/28(金) 16:22:20.38 ] >>23-25 それに近いかも。 リストみたいに中に値がたくさん入る箱(型)があって、 その中身に対して一斉に関数を適用できる 機能を持たせるのがファンクターって理解してるんだけど、 でも、この箱の考え方だと、 関数もファンクターってのがわからない。 ファンクター値っていうのもわからない。
32 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 16:42:44.13 ] このスレ見てて思うのは、 無駄に意味を考えちゃって混乱してることが多いなってことだ。 クラスはインターフェイスを定義するだけ。 ファンクタとして定義できるものがファンクタなんであって、 その意味なんかお前が自分で決めりゃいいんだよ。
33 名前:デフォルトの名無しさん [2014/02/28(金) 17:11:34.99 ] >>31 関数も理屈は同じだよ Bool -> Char 型の関数は、True用とFalse用の二個の文字が入る箱だと思えるし、 Integer -> Char なら、無限個の文字が入る箱だと思える fmapはこれらの全ての文字に一斉に関数を適用する
34 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 18:17:33.82 ] >>33 関数を 戻り値が入った箱 って考えるってことか それなら分かるかも
35 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 18:54:21.83 ] それは関数という概念を捨て去る理解だな 論外
36 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:08:20.41 ] addNumbers :: (Num a) => a -> a -> a って addNumbers :: (Int) => a -> a -> a じゃダメなの?
37 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:11:06.18 ] / \ 、 ヽ\ ヽ . / , / ! ∨丁ヽ い | /二フ” / ! | ィ 「\ | ハ l | ,′ / l ! | / /j/ '. ノ, =、!// /j/ ヽ/ l い/ ,, =x j/ ′ 〈j/ /ヽ ト ._ \_〃 :.:.:.:.} /二フ” l l { 下 ̄ .:.:.:.: -‐1 ∧ / l l T ‐个 ._ ー' イ l| ニニ! l/ /| l l//下二千ヽ_l い ─┘ ' / .′ l,ノ\/// 小、|、\ヽ\ 「〉 Ul / / \/ U` \ヽl i r_| Ul l i ! ト ヽ |
38 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:13:58.72 ] 型クラスは引数を取って 具体型になるのに …ダメ?
39 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:21:37.92 ] Intしかうけないんだからa型じゃおかしいし そもそもaと書きたい理由もわからない
40 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:24:31.32 ] 引数はどっちも同じで Int型に制約を受ける じゃダメ?
41 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:27:29.87 ] いや単に addNum :: Int -> Int -> Int じゃ気に入らないの?
42 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:36:14.79 ] 気に入る、気に入らないの問題じゃないような気がするが・・・
43 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:37:35.37 ] >>41 最初の頃はInt->Intで疑問なかったけど 型クラス制約知った後だと気持ち悪い
44 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:50:57.76 ] えつ??
45 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:58:12.51 ] 制約だよ
46 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 00:09:37.38 ] 純粋は制約なの?
47 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 00:11:10.01 ] 純粋な型は引数を制約できないの?
48 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 00:12:34.44 ] 制約な引数が純粋をどうしたって?
49 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 00:13:50.54 ] 制約されたものに 引数を与えると純粋になるんじゃないか ってことなんだ
50 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 05:35:28.81 ] >>34 ある意味ではリストは関数なんだよ リストのn番目の要素を得る関数(!!)のことを考えてみるといい だからリストが箱だと思えるなら関数も箱だと思えるはず そうして使っているうちにそのうち自分なりの理解が得られるだろう
51 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 07:31:37.56 ] 関数が箱 中学生か
52 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 07:33:37.80 ] f(x)であるということと f(x)の値はyである この区別がなくなるな はこ!
53 名前:デフォルトの名無しさん [2014/03/01(土) 08:41:54.33 ] うん、箱だ!
54 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 09:20:53.58 ] 筒
55 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:43:30.02 ] [゚д゚] < ハコモアイシテ!
56 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:53:27.57 ] 型シグネチャで考えると、思考がスッキリすることが多いね
57 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 16:10:02.41 ] fmapはリフトだよ
58 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 17:05:17.29 ] 比喩より定義の方が簡潔なことは多々あるし、この場合も多分そうだよね
59 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 17:29:51.74 ] 1) 箱に一斉に関数を適用できると捉えるのが手続き型思考 2) リフトと捉えるのが関数型思考 初めは 1 で十分だけど、できるだけ早く 2 で考えられるようになるといいね
60 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 17:42:00.67 ] ?
61 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:34:05.22 ] >>55 箱はカエレ!
62 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:35:28.14 ] 昔は、関数を函数と書いたんだよ。
63 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 06:02:15.22 ] 物と物の対応と考えた貧弱哲学のせいでな
64 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 06:02:56.06 ] ここでも、箱とかいってるやつ、一世期遅れてる
65 名前:デフォルトの名無しさん [2014/03/02(日) 08:22:30.41 ] だな。時代は袋だよ。
66 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 08:53:44.94 ] >>62 function の発音を中国語の発音に当てはめて函数となった。 「従属変数(の表現)に独立変数が容れられている」という意味は込められていても、 本来ブラックボックスとしての「箱」の意味は無いそうだ。 ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0_%28%E6%95%B0%E5%AD%A6%29
67 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 13:49:33.79 ] 時代は圏論的表示意味論
68 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 13:59:47.95 ] >>66 当てはめてじゃなくて、同じ音の、でしょ。 それにウィキペディアの記述の仕方が妙で、良く読むと「箱の意味は無い」と説明している方が 少数派に見えるんだが。
69 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 14:45:30.52 ] どうでもいいクソ話で盛り上がるなクソ共が それより、>>67 にもっと詳しく解説してほしい。 圏論的表示意味論とはどのような意味論(特徴、利点など)なのか。 「具体例」を混ぜて説明してくれないか。
70 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 18:17:07.03 ] >>69 背景: 例えばHaskellにおける型(具体型),IntだとかFloatだとかがあったとき, これらの型情報をうまく扱うためには結局「型=集合」という見方を超えて 「全ての要素にタグ(要するに型情報)がついた世界」を考えたほうが言語の実情に合う. このような事は実は随分昔にラッセルが創始したタイプ理論というもので行われており, その当時の動機としては集合論にまつわるパラドックスを回避するとかそんな意味合いが あったしその理論の完成度も極めて低く今日ラッセルが作った通りのタイプ理論は まあ普通は使わないんだけど,とにかく「タグが整合性を持って付けられる世界」というのを 集合論と同じぐらいの豊かさで作れる.(いろんな定式がある.) ここで圏論が出てくる舞台が出来た.「具体的な基礎型」を対象とし,これらの対象を結ぶ射として単相関数を考える ことにして圏を考える.Haskellで考えるときの名前はHaskと呼ばれる. 簡単な具体例への言及: そして,Intからリスト [Int] を作る手続きは,圏論的には「Haskから自身への自己関手」として 定式化できる.モナドも自己関手の一種として,圏論的に定式化できるというか元々モナドは 圏論用語ですね. 実際には帰納的に構成されるタイプの型を考えるとHaskellでは「下から上」と「上から下」を (おそらくは意図して)混同しているので圏論の議論がシャープすぎるところがあるけど, 各種の,例えばFunctor則だとかモナド則だとかはすべて圏論的な図式の可換性条件として 理解できる. 歴史: Moggiの computational lambda-calculus and monads (1988) なんていう論文 (ネットに転がってる)あたりから出てきた流れだと思われる
71 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 18:57:26.90 ] >>70 それは単なる「Haskellプログラミングにおける圏論の応用」に関する 解説であって、表示的意味論とは関係なくね?
72 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:04:43.21 ] >>70 いや、応用にもなっていない、どこにも「応用例」が無い。 単に、Haskellでプログラマがやっていることを圏論で表すとこうなる、と言ってるだけ。 圏論で表すことによって、プログラマにとってどう良いことがあるのか、 それを示して初めて「応用」だ。 で、>>71 も言ってるように「意味論」の話は?
73 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:19:35.28 ] >>71 >>72 ちゃんとMoggiの論文のタイトルまで書いたんだから詳しいことはそっちを読んでくれ
74 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:21:57.66 ] いくらなんでもMoggiのあの論文だけでは不十分だと思われる
75 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:22:16.73 ] >>73 意味論の話すらここでできない? その論文や他の資料などの内容じゃなくて、 あなたが自分の頭で解釈し構築した「考え」を聞きたいのだが。
76 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:10:23.70 ] >>75 おお、いい書き込みだ
77 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:12:38.43 ] 人に考えをきくときは、まず自分の考えを述べるのが礼儀だ
78 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:15:12.16 ] >>77 わはは! あほなことを しばしば、それは失礼にさえなる
79 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:20:44.42 ] 論文の紹介だけだったか まぁそれでも価値はあるから、もうそれでいいよ ちょっとは期待してたんだが・・・
80 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:43:26.21 ] 教えたところで理解できるという保証がなさそうだね
81 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:53:04.50 ] 上目線で質問するあたり俺たちかっこいい
82 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:55:16.39 ] 「教える」んじゃなくて、「語る」と考えるといいかも 上下関係じゃなくて、対等の関係で議論しあうというのも、たまにはいいと思う (相手を言い負かそうとか、そういうのは無しで)
83 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 21:25:56.03 ] >>82 いいこと言った
84 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 21:32:08.00 ] 圏論わかる同士で話すときに「モナドってのは箱だ」みたいな話しなくて済むだけでも 俺にとっては十分有用です:応用 たまにモナドの議論をしてるときにモナド則の1,2は満たすけど3は満たさないような例だと どんな問題が起きるの?みたいな質問を得意げにする人がいるんだけど(皆さんは賢いので そんなことないでしょうけど)、圏論での意味論(の初歩だが)みたいなのを持ち出せば そういう筋の悪い質問なんかが湧いてこないだけでも有用かな。 あと、Haskellは表記方法がエレガントすぎてたまに型と値の理解がごっちゃになってるひとがいる。 そういう人への(あるいは自分への)リメディアルの議論のための良いバックグラウンドをあたえてくれるね。 本格的な表示意味論のほうは、帰納型が定義できるような圏をどうやって構成するかとかの話が中心だという 気がします。 Moggiがらみで一言付け加えれば、彼の論文にはラムダ計算のような「純粋な計算」を材料にして 「状態付きの計算」だとか「継続」のようなものをどうやって構築するかという話が整理されていて、 自分は無教養なので継続の話は理解できなかったが状態モナドは非常によくわかったし、 RWHでの話もよくわかるようになった。
85 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 21:53:05.39 ] すまん、なにを馬鹿な質問と思うかもしれんが、教えてくれ。 Wikipedia の「プログラム意味論」の項には、[表示的意味論] の説明として、 > 対象とする言語の語句それぞれを「表示」に変換、すなわち別の言語の語句に翻訳する とし、 > 例えば、関数型言語の表示的意味論では、領域理論の言語に翻訳する とある。 その下の派生として、 > 「関数的意味論」または「圏論的意味論」は圏論を基本とした形式意味論である。 とあるけど、Haskellの場合、領域理論の言語では表せない、あるいは表しにくいから、 じゃあ圏論的意味論ではどうかと研究したら、これがよく合っていた、という話なの? この辺り、Haskellの意味論を勉強したい初心者は、 いきなりの圏論的意味論にとりかかっていいものなのか、 それともまずは領域理論から学んだ方が理解しやすいのか。
86 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 22:16:59.59 ] >>85 あくまでも僕の理解してる範囲でだけど モナドだとかFunctorでうまく型を合わせるためのルール(Funcotor則だとかモナド則) を理解したいというだけであるならば、型をとりあえず集合だとおもっておいて 圏論の初歩(Awodyよりもっと簡単なぐらいの本でいいんだけどなんかないかな) を知っていれば十分だと思われる。 一方、Haskellの型推論を改良する方法を提案したかったり、そういうガチの議論を したかったら圏論に加えてタイプ理論まで学んで、領域理論学ぶといいとおもう。 型がついてない領域理論はいくらでも解説があるんだけど型がついてるやつはよく知らない。 ネットに転がってる奴だと Fiore "Axiomatic Domain Theory in Categories of Partial Maps" 1994 ってのがあってたまーに眺めてるけどcpoなんかの知識必須みたいなんで結局 普通の領域理論をよく知ってる必要がありそう。
87 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 22:23:48.34 ] Awodeyより簡単な本だとBasic Category Theory for Computer Scientistsがいい ちなみに圏論を使ったライブラリを作るとかじゃなければ、勉強してもHaskell書く役には立たないよ 精々ドヤ顔で語れるようになるぐらい
88 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 22:31:43.87 ] Ekmett製ライブラリの構造を理解したい場合は圏論的な背景を知っておくのは 大事なんじゃないか感 Free Monad の Free は、まあ単純に「ただで手に入る」の意味だと思ってもいいけど Freeなんちゃらってのが一般代数における標準的な用語であって圏論を背景にすると よくわかるものであることなんかは知っておいて損はあるまい
89 名前:デフォルトの名無しさん [2014/03/02(日) 22:49:00.61 ] レベル高いお話中すいませんが、エディタについて教えてください。 Sublime Text 2 の Ctrl-k の挙動が不快なので、 vi か Emacs に乗り換えることにしました。 どっちも簡単なテキスト編集くらいにしか使えないのですが、ちょっとしらべてみたところ、 vi では式中の選択した部分の型を表示することができるそうです。 Emacs では同じようなことができますかね? ghc-mod を作った山本さんがむかしに、「やり方がわかればできる」的なことをつぶやいていたので、当時はできなかったのだと思うのですが、現在の状況はどうなんでしょう。
90 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 22:49:32.32 ] AwodyもPierceの本もモナドまで行かないからそのへんは物足りない
91 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 23:20:12.13 ] >>89 俺は emacs 使ってるが、haskell-mode でも型シグネチャの表示はできる。 が、vi のものと同じ挙動なのかは知らん。 トップレベルの型シグネチャが書かれた自作関数か、Prelude モジュール内の関数しか、 型シグネチャがエコーエリアに表示されない。 だから、俺はこの機能が役に立ったと感じたことはない。 カスタマイズの項目を見てると、Hoogleを参照したり、 他のモジュールをロードして型情報を得たりできるっぽいんだが、 やり方がよく分からん。
92 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 23:31:07.05 ] sublime使ってるなら操作で戸惑うが可能性のないeclipse fpとか使ったほうが無難じゃないかな
93 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 23:33:19.60 ] >>92 > 操作で戸惑うが可能性のないeclipse fp すまん、思わず笑ってしまった
94 名前:デフォルトの名無しさん [2014/03/03(月) 19:10:46.60 ] Haskell Platformの次のリリースはいつごろなんでしょうか? trac.haskell.org/haskell-platform/wiki/ReleaseTimetable を見ると 2013.4.0.0 Target: November 4th, 2013 とかありますがまだリリースされてないようです。
95 名前:デフォルトの名無しさん [2014/03/03(月) 19:26:25.21 ] >>87 圏論を使ったライブラリに、どんなものがあるのかドヤ顔で語ってよ
96 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 20:29:50.96 ] >>95 Ekmettのライブラリはほとんど圏論的なアイデアをつかったものだよ
97 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 20:51:15.15 ] >>96 そのライブラリは例えば何に使うの?
98 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 00:10:03.09 ] 圏論は論文書くときには格好いいけど、コーディングで顔を出してくるとジャマ
99 名前:デフォルトの名無しさん [2014/03/04(火) 06:43:27.20 ] なんだこれpolitas.jp/articles/54 >元首相が四人も、原発は駄目だ、自然エネルギーに転換しようというのを、 嘘っぱちというほど、わたしは人間不信ではありません。 むしろ四人の元首相がそろって原発は駄目だ、ということに未来を感じます。 この程度の人間が4人も日本国のトップに居たというのは悲劇ですね 失われた20年の元凶だということの裏付けとして、たとえば、素晴らしい能力を持った首相の下で日本がうまくいっていなかったのであれば、 それこそ絶望的状況でありますので、元首相がたが軒並みその程度の能力だったと露見するのは、むしろ歓迎すべきことだと私も思いますね!