- 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/
- 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年の元凶だということの裏付けとして、たとえば、素晴らしい能力を持った首相の下で日本がうまくいっていなかったのであれば、 それこそ絶望的状況でありますので、元首相がたが軒並みその程度の能力だったと露見するのは、むしろ歓迎すべきことだと私も思いますね!
|

|