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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/10/17(水) 08:08:28.97
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/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
Part19 ttp://toro.2ch.net/test/read.cgi/tech/1340760070/
0175デフォルトの名無しさん2012/11/03(土) 22:22:16.53
非決定性と副作用を同類に扱う手法のひとつがモナドだよね?Prologには何かそれに代わる物がある?
0176デフォルトの名無しさん2012/11/03(土) 22:23:16.60
>>171
ナンセンスとか言っても現実にリストとIOは同じモナドの概念でまとめられるので、
まとめられる以上それを別のものにする理由が無い
0177デフォルトの名無しさん2012/11/03(土) 22:29:00.77
IOはRealWorldを状態に持つStateモナドのようなものだってことは理解してる?
0178デフォルトの名無しさん2012/11/03(土) 22:36:14.23
Prolog:
非決定性は副作用の一部 (>>174)

Haskell:
非決定性はモナドの一部 + 副作用はモナドの一部
0179デフォルトの名無しさん2012/11/03(土) 22:37:13.01
まとめられるから、というだけでモナドにまとめている訳でもなさそうだけどな

まとめられるのに、諸事情でまとまっていないものもあるし
0180デフォルトの名無しさん2012/11/03(土) 22:40:44.12
でも、非決定性、状態、継続、例外、入出力等、
かなり多くのものがまとめられるからモナドを選んだんじゃないのかね?
0181デフォルトの名無しさん2012/11/03(土) 22:49:35.35
色々やってるうちに便利なことに気付いたって印象だな
IOとか昔はモナドじゃなかったんでしょ
0182デフォルトの名無しさん2012/11/03(土) 22:54:29.24
流体は非粘性(粘度効果は無視できる)、ポリトロープな状態方程式で記述される熱的な理想気体とし、断熱過程の下で作用する。
0183デフォルトの名無しさん2012/11/03(土) 23:01:50.05
応用範囲が広くて便利なものを「ナンセンス」と言う意味が分からんな
独自の言葉の使い方をしてるならちゃんと最初に定義してくれ
0184デフォルトの名無しさん2012/11/04(日) 00:05:52.82
>>155
Moggiの論文に説明があるよ。でもまあ確かに判ってる人が
判ってる人向けに書いてる感がある。
0185デフォルトの名無しさん2012/11/04(日) 00:09:40.59
>>171
さすがにそんなことはないだろう、なんてことはないのだ。
恒等関手もモナドなのでモナドによって定まるKleisli圏の中に元の圏も
含まれている。形式的な話ではあるが。勿論モナドごとに一つのKleisli圏があり、異なる
モナドをつなぐためにはめんどうな事をしないといけないが
(この辺は自分もまだ未把握。モナドトランスファーが関係してるのかなぁ)
0186デフォルトの名無しさん2012/11/04(日) 00:41:32.78
コアンダ効果を通常の翼の速度分布の説明に使うのは不適切であると
0187デフォルトの名無しさん2012/11/04(日) 04:30:56.21
駄目だ! このスレ頭良い人達でいっぱいだ!
0188デフォルトの名無しさん2012/11/04(日) 07:59:40.61
>>185
そういう言いかたなら、関数は射なのだから,やっぱりそんなことはないのだ。
0189デフォルトの名無しさん2012/11/04(日) 09:31:56.97
>>188
射は関数とは限らないから、それは反論になってないよ(ただ185の議論が強引なのは確か)
0190デフォルトの名無しさん2012/11/04(日) 09:59:30.19
プログラムとは関数では無くKleisli圏の射のことなので、
関数よりモナドの方が広いと言うのはある意味正しい
0191デフォルトの名無しさん2012/11/04(日) 10:13:46.42
>>185
いまここではそもそもそのKleisli圏がどれだけ意味があるのかを聞かれているんじゃないかな
0192デフォルトの名無しさん2012/11/04(日) 10:22:17.47
>>190
米田の補題より、関数=射。
190より、モナド⊂プログラム=Kleisli圏の射⊂射。
したがって、モナド⊂関数。
これでOK?
0193デフォルトの名無しさん2012/11/04(日) 10:36:35.07
諸君、議論しているね
0194デフォルトの名無しさん2012/11/04(日) 10:56:48.43
>>192
>米田の補題より、関数=射。
ちょっと意味が解らないんだけど、
米田の補題からどうやって関数=射(ここで言うイコールって何?)が導かれるのか説明してくれない?
0195デフォルトの名無しさん2012/11/04(日) 13:53:18.43
むしろ、カルテジアン閉のような気がする
0196デフォルトの名無しさん2012/11/04(日) 15:51:14.41
>>189
強引?
間違ってるっていうんだよw
0197デフォルトの名無しさん2012/11/04(日) 16:08:25.97
Q. 何でIOと[]の共通部分をわざわざ括り出して名前を付けるの?
A. 便利だから

で済む話だろ
0198デフォルトの名無しさん2012/11/04(日) 16:21:23.88
Moggiの論文読めば済む話なのに、何をごちゃごちゃ言ってるのんだよ
0199デフォルトの名無しさん2012/11/04(日) 16:59:49.49
英語を読んだら死ぬという噂だし…
0200デフォルトの名無しさん2012/11/04(日) 17:41:22.96
>>197
IOをモナドで扱うのが便利なのは分かるが、
リストまで同じようにモナドで扱うのが便利な理由がいまいち分からん
0201デフォルトの名無しさん2012/11/04(日) 17:43:30.65
>>198
だからあMoggi論文が納得できないって言ってるんだろ
それはそれでありだな
0202デフォルトの名無しさん2012/11/04(日) 17:43:44.71
>>200
内包表記便利じゃん
あれってモナドだからだよ
0203デフォルトの名無しさん2012/11/04(日) 18:03:37.92
>>195
:(;゙゚'ω゚'):カルテジアンなの? カルテシアンだと思ってた
0204デフォルトの名無しさん2012/11/04(日) 18:09:09.26
コードも書かずにモナドがどうやら大して理解もしてない圏論がどうやら、
実にHaskellerらしいスレですね
0205デフォルトの名無しさん2012/11/04(日) 18:12:53.23
圏論を深く理解したHaskellerでもなさそうなあなた様が
このような場末に何の御用で
0206デフォルトの名無しさん2012/11/04(日) 18:23:29.00
>>200
リストモナドは総当たり(深さ優先探索)するときに使う
問題によってはStateT s []がすごく便利
0207デフォルトの名無しさん2012/11/04(日) 18:48:07.95
>>202
リスト以外で内包表記が役に立つ(適している)シーンが思い浮かばない

リストもモナドで括る利点が内包表記ができるってだけなら、
内包表記はリスト専用構文でもいいような気がするのだが
0208デフォルトの名無しさん2012/11/04(日) 18:51:07.34
>>206
すまん、総当たり(深さ優先探索)する簡単な具体例は何か無いだろうか
(俺、ここでいう総当たりの意味がよく分かっていない)

リストがモナドになっていない他の言語と比較してみたい
0209デフォルトの名無しさん2012/11/04(日) 18:57:56.15
つうかモナド内包表記っていつのまにか復活してたのか
0210デフォルトの名無しさん2012/11/04(日) 19:07:30.55
Listモナドが何なのかもわかってなくて煽ってたのかこいつは
Listの各要素に関数を適用するmap程度のものだとか思ってたのか?
0211デフォルトの名無しさん2012/11/04(日) 19:12:23.22
いろんな書き方が出来て楽しいのう

do { x <- xs; y <- ys; return $ x + y }

[x + y | x <- xs, y <- ys]

(+) <$> xs <*> ys
0212デフォルトの名無しさん2012/11/04(日) 20:02:05.01
>>211
一番下の知的な書き方に憧れます
0213デフォルトの名無しさん2012/11/04(日) 20:51:41.09
>>210
それ以外に効果的だと感じる内包表記の使い方を見たことがない
0214デフォルトの名無しさん2012/11/04(日) 21:03:01.89
わかってるじゃないか
お前が見たことないだけだよ
0215デフォルトの名無しさん2012/11/04(日) 21:12:11.35
>>211みたいなの見てるとリストの要素から別のひとつの要素作ってるだけだから、
あんま効果的に見えないんだな

リストモナドの場合、
要素からリストをつくる操作(リストが入れ子になるわけじゃないよ)とか
要素を排除する操作とか(途中ですべての要素が排除されたら処理は止まる)を混ぜることができて、
最終的に結果をひとつのリストとして得ることができる
0216デフォルトの名無しさん2012/11/04(日) 21:13:48.86
総当りというかバックトラックの例だが。

nQueen :: Int -> [[(Int,Int)]]
nQueen n = nQueen_ 1 [[]]
 where nQueen_ m ans
   | m > n = ans
   | otherwise = nQueen_ (m + 1) [(m, x) : xs |
                       xs <- ans,
                       x <- [1..n],
                       all (\ (i, j) -> x /= j && abs (m - i) /= abs (x - j)) xs]
0217デフォルトの名無しさん2012/11/04(日) 21:14:33.43
4つの4で0..100を作るパズル
import Data.List
import Control.Monad
main = putStr $ unlines $ map (intercalate ", " . take 2 . fourFours) [0..100]

fourFours :: Int -> [String]
fourFours target = do
  (val, str) <- msum $ map makeWith [[4,4,4,4], [44,4,4], [4,44,4], [4,4,44], [444,4], [4,444], [4444]]
  guard $ val == fromIntegral target
  return str

makeWith :: [Int] -> [(Rational, String)]
makeWith [x] = return (fromIntegral x, show x)
makeWith xs = do
  (left@(_:_), right@(_:_)) <- zip (inits xs) (tails xs) -- xsを二つに分ける
  leftVal <- makeWith left -- 左部分式を作る
  rightVal <- makeWith right -- 右部分式を作る
  combine leftVal rightVal -- 演算して組み合わせる

combine :: (Rational, String) -> (Rational, String) -> [(Rational, String)]
combine left right = do
  op <- [add, sub, mul, div] -- 演算を選ぶ
  op left right
  where
    add a b = return $ op2 (+) "+" a b
    sub a b = return $ op2 (-) "-" a b
    mul a b = return $ op2 (*) "*" a b
    div a b = do
      guard $ fst b /= 0
      return $ op2 (/) "/" a b
    op2 valOp strOp (v0, s0) (v1, s1) = (valOp v0 v1, "(" ++ s0 ++ ")" ++ strOp ++ "(" ++ s1 ++ ")")
0218デフォルトの名無しさん2012/11/04(日) 21:24:26.05
君らがやってるのはトイプログラムとか頭の体操の類いだけじゃん

たとえばゲーム製作の**の部分での利用とか、
会計ソフト製作での**の部分での利用とか、
Webサービス製作での**の部分での利用とか
そういう実用的な部分での使い方はねーの?
0219デフォルトの名無しさん2012/11/04(日) 21:26:14.32
いつからそんな話になったんだよww
0220デフォルトの名無しさん2012/11/04(日) 21:30:31.40
jQueryなんかはListモナド的なものをうまく活用してるいい例かね
Listモナドのアルゴリズムはわりと広範囲に応用可能だと思う
状態モナド的なものと比べて
0221デフォルトの名無しさん2012/11/04(日) 21:30:39.00
>>218
なんで総当たりの実演をするのにそんな分野依存の知識を要求する例が欲しいんだ?
リストモナドは総当たりが必要な時にはいつでも使える、ということさえ知ってれば
プログラマなら応用できるだろ
0222デフォルトの名無しさん2012/11/04(日) 21:34:13.80
まあでもはっきり言えばリストモナドは実用上そこまで重要じゃないと思う
Maybeの方が10000倍大事
0223デフォルトの名無しさん2012/11/04(日) 21:35:36.79
カードをプレイするためのコストが比較的複雑なTCGで、
手札のカードが場に出せるかどうかを判定するのにStateT a [] bを使ったような記憶はある
0224デフォルトの名無しさん2012/11/04(日) 21:48:05.17
>>219
いや、だってさ
実用的なシーンではたいして使えない仕組みなんて、
あっても意味は無くないか?

何のためにプログラムしてるかと言えば、
アプリを作るためにしてる、というのが
まぁ一般の大半のプログラマの意見だと思うし
0225デフォルトの名無しさん2012/11/04(日) 21:50:01.24
あと、俺の言う仕組みって、リスト以外のモナド内包表記のことね
0226デフォルトの名無しさん2012/11/04(日) 21:55:28.18
>>224
いや、>>208に答えてリストモナドがどんな感じで動くかという話をしてるんであって、
リストモナドの存在意義を示すための例じゃないよ
0227デフォルトの名無しさん2012/11/04(日) 21:56:42.71
>>225
お前は誰だよw文脈依存な書き込みするならコテつけろw
0228デフォルトの名無しさん2012/11/04(日) 21:59:12.10
モナドの出番だな
0229デフォルトの名無しさん2012/11/04(日) 22:18:45.82
>>226
だったらアンカーを適切に付けろ
こっちはモナドを勉強中なんだから何に対しての何の意見なのか全く分かんねーよ

で本題だが、すいませんでした、>>216 は参考になります
これから他の言語と比較して理解を深めようと思います
0230デフォルトの名無しさん2012/11/04(日) 22:32:03.03
リストがモナドである意味が分からないのか、
内包表記がリスト以外のモナドで使える意味が分からないのか、
それとも他に難癖付けてるのか
レスが錯綜してて分からん
0231デフォルトの名無しさん2012/11/04(日) 22:37:52.14
非リストのモナド内包表記の活用例というのは俺も見てみたい
実際使ったことがない
0232デフォルトの名無しさん2012/11/04(日) 22:43:10.02
>>230
> リストがモナドである意味が分からないのか、

これはとても難しい問題だと直感したから、ひとまず置いておく。

> 内包表記がリスト以外のモナドで使える意味が分からないのか、

まずはこれを知りたい。
しかも、意味は難しいそうだから、まずは例を。

遊びにしか使えない例なら、そんなもので意味を探るのは無理だから、要らない。
0233デフォルトの名無しさん2012/11/04(日) 23:02:36.40
>>222
>Maybeの方が10000倍大事
Maybeが?ほんまかいな
0234デフォルトの名無しさん2012/11/04(日) 23:07:02.43
> ほんまかいな
メイビー(キリッ
0235デフォルトの名無しさん2012/11/04(日) 23:09:02.03
センスNothing
0236デフォルトの名無しさん2012/11/04(日) 23:17:29.69
好きな書き方で書けば良いよ

if y /= 0 then Just (x / y) else Nothing

do { guard (y /= 0); return (x / y) }

guard (y /= 0) >> return (x / y)

[x / y | y /= 0]
0237デフォルトの名無しさん2012/11/04(日) 23:37:47.36
いろんなライブラリ内で Maybe が使われているのを見るが、
[x / y | y /= 0] のような書き方を見ないのは何故だ?
0238デフォルトの名無しさん2012/11/04(日) 23:38:52.87
モナド内包表記が復活したのって最近でしょ?
0239デフォルトの名無しさん2012/11/04(日) 23:43:08.50
可読性もありそう
0240デフォルトの名無しさん2012/11/04(日) 23:50:31.34
そんなキモい書き方するのなんてゴルファー()ぐらいたろ
0241デフォルトの名無しさん2012/11/04(日) 23:51:42.79
モナドのインターフェースを持ってるから、>>211みたいに
do形式や内包表記さらにはアプリカティブファンクターの式なんかの好きな書き方ができるんだよね
0242デフォルトの名無しさん2012/11/04(日) 23:53:14.08
>238
復活といっても GHC の言語拡張ですよ。


if y /= 0 then Just (x / y) else Nothing
[x / y | y /= 0]

どちらがプログラムの意味を理解しやすいかは読み手の経験によるでしょうが、
私は前者の方を使いたいですね。
0243デフォルトの名無しさん2012/11/05(月) 00:01:01.45
内包表記をリスト以外に使うのがキモいのなら

> 内包表記がリスト以外のモナドで使える意味が分からないのか

なんて訊くまでもないよね。
だって使えるかどうかに関わらずキモいから使わないんでしょ?
0244デフォルトの名無しさん2012/11/05(月) 00:26:31.37
>>243

>>323
> 遊びにしか使えない例なら、そんなもので意味を探るのは無理だから、要らない。

[x / y | y /= 0] これが遊びでないと言うのなら、>>237 はどう説明する?
なぜ書籍ではこのような書き方が紹介されない?


俺は内包表記がリスト以外のモナドで使えるのは、意味なんて何も無いと思う。

最初は、モナドだとどんなものでも内包表記ができちゃう事を発見したから、
プログラマがなんか役立つ使い方をしてくれるだろうという安直な考えで、
リスト以外にも使えるモナド内包表記が作られたんじゃないかな。
設計者自身に明確な目的なんてきっと無いでしょ。

その後、たいして上手い使い方も無いまま復活した理由が不明だが。
0245デフォルトの名無しさん2012/11/05(月) 00:43:08.53
結論ありきなら議論する意味なんて無いってだけだよ。
ていうか、書籍に書いてあるかどうかで判断したいなら
こんなとこで他人に聞く必要もないだろ?
0246デフォルトの名無しさん2012/11/05(月) 00:49:09.20
>>244
なんでリストで内包表記が使えるのは意味があるの?
do構文があれば要らないよね?
0247デフォルトの名無しさん2012/11/05(月) 00:49:49.28
>なぜ書籍ではこのような書き方が紹介されない?
そりゃ自分で書いてる通り、最近復活したからでしょ
そのうちリスト以外でもイディオムが生まれてくるよ
0248デフォルトの名無しさん2012/11/05(月) 04:01:00.46
>>236
:(;゙゚'ω゚'):内包表記って[と]で括られてるからリスト専用だと思ってた……
       今までは偽りの人生だった……
0249デフォルトの名無しさん2012/11/05(月) 04:08:25.37
本に書いてあって現場で使われているものにしか興味ないなら
スレ間違えてるよな
0250デフォルトの名無しさん2012/11/05(月) 04:19:05.02
エロゲの攻略法わかんなくてゲームの意義を問う
というかZIPでくれと言い出す奴
0251デフォルトの名無しさん2012/11/05(月) 05:35:28.68
サワーグレープセオリー
0252デフォルトの名無しさん2012/11/05(月) 06:23:16.95
ghciだと:set -XMonadComprehensionsでモナド内包表記が有効になるのか
これはなかなかおもしろいな
0253デフォルトの名無しさん2012/11/05(月) 06:36:23.36
>>252
詳しい解説サンクス
それならPerl忍者が荒らすのも分かる気がする(´・ω・`)
0254デフォルトの名無しさん2012/11/05(月) 07:21:11.08
>>249
じゃあ、本は無しにしようか。

現場に限ってもいいし、
何なら HackageDB に登録されているライブラリ内に限定してもいいが、
それでもスレ違いか?

プログラム言語において機能を実装するというのは、
使うことによってメリットがあると想定されるからだろう。

Haskell は実用もしっかりできる関数型言語を目指して生まれたのだから、
なおさらだ。

Haskell98 で言語仕様から消えたモナド内包表記が、
最近になってGHCの言語拡張として復活したのは、どういう意図があって?
モナド内包表記が欲しいと思っていた人たちは、
どういうシーンでそれが活用できると考えていたの?
その辺りが知りたい。

正直言って、>>236 の例では恩恵が実感できない。
「好きな書き方で書けば良い」という理由だけで復活したとも思えん。
それでは Perl みたいじゃないか。
0255デフォルトの名無しさん2012/11/05(月) 07:28:03.96
内包表記なんて長いコードに使うもんじゃない
(長くなるならmapなりfilterなりdoなり使うべき)
だから短いコードだから内包表記で書く意義が
分からないってワケじゃないだろう

ってことは、こっちは>>254様が納得する理由をエスパーしてやらなきゃ
ダメってことなワケだが、なんでそんなことしてやる必要あるの?
0256デフォルトの名無しさん2012/11/05(月) 07:28:37.24
>>254
>>247
0257デフォルトの名無しさん2012/11/05(月) 07:49:04.08
>>254
http://hackage.haskell.org/trac/ghc/ticket/4370
http://hackage.haskell.org/trac/ghc/wiki/MonadComprehensions
0258デフォルトの名無しさん2012/11/05(月) 12:01:23.74
サーセン
Data.Vectorで組んで動いたコードをData.Vector.Unboxedに切り替えようと思ったんすよ

そしたら急にVectorはファンクタじゃないからfmap使えないよ Probable fix 云々ってクレーム来たんすけど

どゆことっすか?ファンクタでしょ?
0259デフォルトの名無しさん2012/11/05(月) 15:54:09.94
>>258
メッセージ全文うpらないのは甘え
0260デフォルトの名無しさん2012/11/05(月) 19:08:43.11
>>257
ありがと。

前者は単にモナド内包表記と同等の do 表記をいくつか例示してるだけじゃん。
誤解を恐れずに言えば、モナド内包表記の操作的意味論っぽいものを示してるだけ。

ただ、そのページに論文「Bringing Back Monad Comprehensions」へのリンクがあった。
こっちはざっと見たところ「現実的な問題提起 --> モナド内包表記による解決」
という感じで語っているような気がするから、実用的なことが書かれていそうだ。
これからじっくり読んでみるよ。

後者の方はこの論文と同名なんだが、同じもの?
至る所に訂正の跡があるのだが、最新版ってことかな?

どちらにしても、「Bringing Back Monad Comprehensions」
こういう情報が欲しかったんだ。
0261デフォルトの名無しさん2012/11/05(月) 19:12:58.71
>>258
unboxed vectorは関手じゃないよ(腹が立つのは分かる)
関手なら fmap :: (a -> b) -> Vector a -> Vector b
が定義できなきゃならんけど、unboxed vectorだとb=Integerとかにできない
(Unbox制約を満たさないといけないから)
0262デフォルトの名無しさん2012/11/05(月) 19:21:08.08
最近流行ってる関手って、そもそも何?
0263デフォルトの名無しさん2012/11/05(月) 19:24:41.98
http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.6.0.0/Prelude.html#t:Functor
Haskellでいう関手はこれ
圏論の関手は他を当たってね!
0264デフォルトの名無しさん2012/11/05(月) 19:29:59.09
>>261
マジすか
複雑な事情っすね
実践よりもHaskell型システムの理解に的を絞ったサイトないっすか?
0265デフォルトの名無しさん2012/11/05(月) 19:30:38.26
>>262
map を関手の一つと考えると、関手から自然変換まで簡単に理解できる

簡単に理解できる = 毎日30分定義とにらめっこして1週間ぐらい悩むと分かる
0266デフォルトの名無しさん2012/11/05(月) 19:41:26.25
>>263
Functor クラスが関手のことなら、なにも漢字で書かなくてもよくない?

unboxed vector は Functor クラスのインスタンスじゃないから、
と言う方がはるかに分かりやすいというか、ストレートだと思うんだが

と感じるのは私だけ?
0267デフォルトの名無しさん2012/11/05(月) 19:44:20.77
知らんがな
0268デフォルトの名無しさん2012/11/05(月) 19:52:07.99
>>266
定着してる訳語があるのに横文字や片仮名を使うのは宗教上の理由でできんのです、ごめんなさい
0269デフォルトの名無しさん2012/11/05(月) 19:55:12.71
>>268
ギャグとしてはあまり面白くない
0270デフォルトの名無しさん2012/11/05(月) 20:02:00.78
女だ! このスレに女が紛れ込んでるぞぉーっ!
魔女を焼き払えーっ!
0271デフォルトの名無しさん2012/11/05(月) 20:04:44.17
一人称を私にすると賢そうに見えるの法則
0272デフォルトの名無しさん2012/11/05(月) 20:14:25.77
ん?

Functor クラスそのものは関手なの?

Functor クラスがたまたま持つ性質(種数やfmap関数など)を持つものが関手なの?
たとえば Applicative なども関手?

Functor クラス自身とそのインスタンスのみが関手?

Functor クラスそのもののみが関手で、そのインスタンスは集合の要素みたいなもの?

わけが分からなくなった・・・


>>271
一人称「私」なんて誰でも使うから、賢そうに見える要素にならないでしょ
0273デフォルトの名無しさん2012/11/05(月) 20:20:11.08
>>272
二番目が一番近いと思う
0274デフォルトの名無しさん2012/11/05(月) 20:24:02.72
>>273
そうだとすると、>>268 の言う「定着してる訳語」っておかしくないか?

>>268 の言い方だと Functor の日本語訳が関手である、
と言っているように聞こえる
■ このスレッドは過去ログ倉庫に格納されています