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


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

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



1 名前:デフォルトの名無しさん [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/

159 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 19:45:48.97 ]
>146
>7のClojureはrange使ってるよ

160 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 19:51:21.33 ]
>>155
Prologは副作用系と数学系を区別してなかったのだが
Haskellはいったん副作用系と数学系を対立させ、再び統一するためにモナドを発明した

161 名前:デフォルトの名無しさん [2012/11/03(土) 20:43:47.80 ]
>>160
うん。そのとき、たとえば、IO a とList a における IOとListには、
どちらも型構成子であるという共通性はあるが、それ以外の共通性は
感じ取れないんだ。さらにいうと、List aの方はaの自然な拡張だと
すんなり納得できるが、IO aの方は、aとIOの強引な組合せとしか
見えないんだ。

162 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 20:58:35.33 ]
>>159
前スレのテンプレを見てもらえばわかるがrangeとか1..5とか使ってないのよ
だから元々そういう縛りがあったんだろう

163 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 21:01:56.52 ]
あれはテンプレじゃなく前スレで勝手にぶっこまれただぞ

164 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 21:09:19.21 ]
>>163
それは失敬
でもテンプレ化するならそれなりにルールを決めないとだめだよね

165 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 21:10:54.68 ]
>>161
お前には感じ取れなくてもListとIOには共通性があって
その共通性に基づいてるのがモナドなんだな

166 名前:デフォルトの名無しさん [2012/11/03(土) 21:11:34.99 ]
え聞こえないとかありがちだからなー

167 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 21:15:23.85 ]
「感じる」とはまた曖昧で主観的な・・・



168 名前:デフォルトの名無しさん [2012/11/03(土) 21:28:01.97 ]
>>165
>ListとIOには共通性があって
どういう共通性?

169 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 21:29:04.57 ]
モナドとは、モナド則を満たすような(>>=)とreturnを定義できる型構築子のこと
逆に、ある型構築子に対してモナド則を満たすような(>>=)とreturnを定義できるならそれはモナド

170 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 21:35:43.05 ]
IOとかListとかが実際に果たす役割はどうでもよくて、共通する構造によって表現可能ってことだから 関数よりむしろモナドのほうが広いとも言える

171 名前:デフォルトの名無しさん [2012/11/03(土) 21:43:13.59 ]
>>169
むしろ、IOとListとが同類にみえるようなモナド則は実はナンセンスなのじゃ
ないかという疑問なのだが?
>>170
さすがにそんなことはないだろう。

172 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:04:53.50 ]
>>169
そのような性質を持つものにモナドという名前を与えた背景の方が興味あるな

173 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:05:36.02 ]
>>171
モナド則なんてなくても、Prologでは副作用と非決定性は同類に見えていた

174 名前:デフォルトの名無しさん [2012/11/03(土) 22:15:51.32 ]
>>172
お察しの通り、モノイドとの類似性から
>>173
非決定性が副作用の一部というなら分かるが、同類というのは分からん。
Prologの何のことを言ってる?

175 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:22:16.53 ]
非決定性と副作用を同類に扱う手法のひとつがモナドだよね?Prologには何かそれに代わる物がある?

176 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:23:16.60 ]
>>171
ナンセンスとか言っても現実にリストとIOは同じモナドの概念でまとめられるので、
まとめられる以上それを別のものにする理由が無い

177 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:29:00.77 ]
IOはRealWorldを状態に持つStateモナドのようなものだってことは理解してる?



178 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:36:14.23 ]
Prolog:
非決定性は副作用の一部 (>>174)

Haskell:
非決定性はモナドの一部 + 副作用はモナドの一部

179 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:37:13.01 ]
まとめられるから、というだけでモナドにまとめている訳でもなさそうだけどな

まとめられるのに、諸事情でまとまっていないものもあるし

180 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:40:44.12 ]
でも、非決定性、状態、継続、例外、入出力等、
かなり多くのものがまとめられるからモナドを選んだんじゃないのかね?

181 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 22:49:35.35 ]
色々やってるうちに便利なことに気付いたって印象だな
IOとか昔はモナドじゃなかったんでしょ

182 名前:デフォルトの名無しさん [2012/11/03(土) 22:54:29.24 ]
流体は非粘性(粘度効果は無視できる)、ポリトロープな状態方程式で記述される熱的な理想気体とし、断熱過程の下で作用する。

183 名前:デフォルトの名無しさん mailto:sage [2012/11/03(土) 23:01:50.05 ]
応用範囲が広くて便利なものを「ナンセンス」と言う意味が分からんな
独自の言葉の使い方をしてるならちゃんと最初に定義してくれ

184 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 00:05:52.82 ]
>>155
Moggiの論文に説明があるよ。でもまあ確かに判ってる人が
判ってる人向けに書いてる感がある。

185 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 00:09:40.59 ]
>>171
さすがにそんなことはないだろう、なんてことはないのだ。
恒等関手もモナドなのでモナドによって定まるKleisli圏の中に元の圏も
含まれている。形式的な話ではあるが。勿論モナドごとに一つのKleisli圏があり、異なる
モナドをつなぐためにはめんどうな事をしないといけないが
(この辺は自分もまだ未把握。モナドトランスファーが関係してるのかなぁ)

186 名前:デフォルトの名無しさん [2012/11/04(日) 00:41:32.78 ]
コアンダ効果を通常の翼の速度分布の説明に使うのは不適切であると

187 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 04:30:56.21 ]
駄目だ! このスレ頭良い人達でいっぱいだ!



188 名前:デフォルトの名無しさん [2012/11/04(日) 07:59:40.61 ]
>>185
そういう言いかたなら、関数は射なのだから,やっぱりそんなことはないのだ。

189 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 09:31:56.97 ]
>>188
射は関数とは限らないから、それは反論になってないよ(ただ185の議論が強引なのは確か)

190 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 09:59:30.19 ]
プログラムとは関数では無くKleisli圏の射のことなので、
関数よりモナドの方が広いと言うのはある意味正しい

191 名前:デフォルトの名無しさん [2012/11/04(日) 10:13:46.42 ]
>>185
いまここではそもそもそのKleisli圏がどれだけ意味があるのかを聞かれているんじゃないかな

192 名前:デフォルトの名無しさん [2012/11/04(日) 10:22:17.47 ]
>>190
米田の補題より、関数=射。
190より、モナド⊂プログラム=Kleisli圏の射⊂射。
したがって、モナド⊂関数。
これでOK?

193 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 10:36:35.07 ]
諸君、議論しているね

194 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 10:56:48.43 ]
>>192
>米田の補題より、関数=射。
ちょっと意味が解らないんだけど、
米田の補題からどうやって関数=射(ここで言うイコールって何?)が導かれるのか説明してくれない?


195 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 13:53:18.43 ]
むしろ、カルテジアン閉のような気がする

196 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 15:51:14.41 ]
>>189
強引?
間違ってるっていうんだよw

197 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 16:08:25.97 ]
Q. 何でIOと[]の共通部分をわざわざ括り出して名前を付けるの?
A. 便利だから

で済む話だろ



198 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 16:21:23.88 ]
Moggiの論文読めば済む話なのに、何をごちゃごちゃ言ってるのんだよ

199 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 16:59:49.49 ]
英語を読んだら死ぬという噂だし…

200 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 17:41:22.96 ]
>>197
IOをモナドで扱うのが便利なのは分かるが、
リストまで同じようにモナドで扱うのが便利な理由がいまいち分からん

201 名前:デフォルトの名無しさん [2012/11/04(日) 17:43:30.65 ]
>>198
だからあMoggi論文が納得できないって言ってるんだろ
それはそれでありだな

202 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 17:43:44.71 ]
>>200
内包表記便利じゃん
あれってモナドだからだよ

203 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 18:03:37.92 ]
>>195
:(;゙゚'ω゚'):カルテジアンなの? カルテシアンだと思ってた

204 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 18:09:09.26 ]
コードも書かずにモナドがどうやら大して理解もしてない圏論がどうやら、
実にHaskellerらしいスレですね

205 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 18:12:53.23 ]
圏論を深く理解したHaskellerでもなさそうなあなた様が
このような場末に何の御用で

206 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 18:23:29.00 ]
>>200
リストモナドは総当たり(深さ優先探索)するときに使う
問題によってはStateT s []がすごく便利

207 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 18:48:07.95 ]
>>202
リスト以外で内包表記が役に立つ(適している)シーンが思い浮かばない

リストもモナドで括る利点が内包表記ができるってだけなら、
内包表記はリスト専用構文でもいいような気がするのだが



208 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 18:51:07.34 ]
>>206
すまん、総当たり(深さ優先探索)する簡単な具体例は何か無いだろうか
(俺、ここでいう総当たりの意味がよく分かっていない)

リストがモナドになっていない他の言語と比較してみたい

209 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 18:57:56.15 ]
つうかモナド内包表記っていつのまにか復活してたのか

210 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 19:07:30.55 ]
Listモナドが何なのかもわかってなくて煽ってたのかこいつは
Listの各要素に関数を適用するmap程度のものだとか思ってたのか?

211 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 19:12:23.22 ]
いろんな書き方が出来て楽しいのう

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

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

(+) <$> xs <*> ys

212 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 20:02:05.01 ]
>>211
一番下の知的な書き方に憧れます

213 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 20:51:41.09 ]
>>210
それ以外に効果的だと感じる内包表記の使い方を見たことがない

214 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:03:01.89 ]
わかってるじゃないか
お前が見たことないだけだよ

215 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:12:11.35 ]
>>211みたいなの見てるとリストの要素から別のひとつの要素作ってるだけだから、
あんま効果的に見えないんだな

リストモナドの場合、
要素からリストをつくる操作(リストが入れ子になるわけじゃないよ)とか
要素を排除する操作とか(途中ですべての要素が排除されたら処理は止まる)を混ぜることができて、
最終的に結果をひとつのリストとして得ることができる

216 名前:デフォルトの名無しさん mailto:sage [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]

217 名前:デフォルトの名無しさん mailto:sage [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 ++ ")")



218 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:24:26.05 ]
君らがやってるのはトイプログラムとか頭の体操の類いだけじゃん

たとえばゲーム製作の**の部分での利用とか、
会計ソフト製作での**の部分での利用とか、
Webサービス製作での**の部分での利用とか
そういう実用的な部分での使い方はねーの?

219 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:26:14.32 ]
いつからそんな話になったんだよww

220 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:30:31.40 ]
jQueryなんかはListモナド的なものをうまく活用してるいい例かね
Listモナドのアルゴリズムはわりと広範囲に応用可能だと思う
状態モナド的なものと比べて

221 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:30:39.00 ]
>>218
なんで総当たりの実演をするのにそんな分野依存の知識を要求する例が欲しいんだ?
リストモナドは総当たりが必要な時にはいつでも使える、ということさえ知ってれば
プログラマなら応用できるだろ

222 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:34:13.80 ]
まあでもはっきり言えばリストモナドは実用上そこまで重要じゃないと思う
Maybeの方が10000倍大事

223 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:35:36.79 ]
カードをプレイするためのコストが比較的複雑なTCGで、
手札のカードが場に出せるかどうかを判定するのにStateT a [] bを使ったような記憶はある

224 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:48:05.17 ]
>>219
いや、だってさ
実用的なシーンではたいして使えない仕組みなんて、
あっても意味は無くないか?

何のためにプログラムしてるかと言えば、
アプリを作るためにしてる、というのが
まぁ一般の大半のプログラマの意見だと思うし

225 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:50:01.24 ]
あと、俺の言う仕組みって、リスト以外のモナド内包表記のことね

226 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:55:28.18 ]
>>224
いや、>>208に答えてリストモナドがどんな感じで動くかという話をしてるんであって、
リストモナドの存在意義を示すための例じゃないよ

227 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:56:42.71 ]
>>225
お前は誰だよw文脈依存な書き込みするならコテつけろw



228 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 21:59:12.10 ]
モナドの出番だな

229 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 22:18:45.82 ]
>>226
だったらアンカーを適切に付けろ
こっちはモナドを勉強中なんだから何に対しての何の意見なのか全く分かんねーよ

で本題だが、すいませんでした、>>216 は参考になります
これから他の言語と比較して理解を深めようと思います

230 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 22:32:03.03 ]
リストがモナドである意味が分からないのか、
内包表記がリスト以外のモナドで使える意味が分からないのか、
それとも他に難癖付けてるのか
レスが錯綜してて分からん

231 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 22:37:52.14 ]
非リストのモナド内包表記の活用例というのは俺も見てみたい
実際使ったことがない

232 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 22:43:10.02 ]
>>230
> リストがモナドである意味が分からないのか、

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

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

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

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

233 名前:デフォルトの名無しさん [2012/11/04(日) 23:02:36.40 ]
>>222
>Maybeの方が10000倍大事
Maybeが?ほんまかいな

234 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:07:02.43 ]
> ほんまかいな
メイビー(キリッ

235 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:09:02.03 ]
センスNothing

236 名前:デフォルトの名無しさん mailto:sage [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]

237 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:37:47.36 ]
いろんなライブラリ内で Maybe が使われているのを見るが、
[x / y | y /= 0] のような書き方を見ないのは何故だ?



238 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:38:52.87 ]
モナド内包表記が復活したのって最近でしょ?

239 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:43:08.50 ]
可読性もありそう

240 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:50:31.34 ]
そんなキモい書き方するのなんてゴルファー()ぐらいたろ

241 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:51:42.79 ]
モナドのインターフェースを持ってるから、>>211みたいに
do形式や内包表記さらにはアプリカティブファンクターの式なんかの好きな書き方ができるんだよね

242 名前:デフォルトの名無しさん mailto:sage [2012/11/04(日) 23:53:14.08 ]
>238
復活といっても GHC の言語拡張ですよ。


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

どちらがプログラムの意味を理解しやすいかは読み手の経験によるでしょうが、
私は前者の方を使いたいですね。

243 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 00:01:01.45 ]
内包表記をリスト以外に使うのがキモいのなら

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

なんて訊くまでもないよね。
だって使えるかどうかに関わらずキモいから使わないんでしょ?

244 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 00:26:31.37 ]
>>243

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

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


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

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

その後、たいして上手い使い方も無いまま復活した理由が不明だが。

245 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 00:43:08.53 ]
結論ありきなら議論する意味なんて無いってだけだよ。
ていうか、書籍に書いてあるかどうかで判断したいなら
こんなとこで他人に聞く必要もないだろ?

246 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 00:49:09.20 ]
>>244
なんでリストで内包表記が使えるのは意味があるの?
do構文があれば要らないよね?

247 名前:デフォルトの名無しさん [2012/11/05(月) 00:49:49.28 ]
>なぜ書籍ではこのような書き方が紹介されない?
そりゃ自分で書いてる通り、最近復活したからでしょ
そのうちリスト以外でもイディオムが生まれてくるよ



248 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 04:01:00.46 ]
>>236
:(;゙゚'ω゚'):内包表記って[と]で括られてるからリスト専用だと思ってた……
       今までは偽りの人生だった……

249 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 04:08:25.37 ]
本に書いてあって現場で使われているものにしか興味ないなら
スレ間違えてるよな

250 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 04:19:05.02 ]
エロゲの攻略法わかんなくてゲームの意義を問う
というかZIPでくれと言い出す奴

251 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 05:35:28.68 ]
サワーグレープセオリー

252 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 06:23:16.95 ]
ghciだと:set -XMonadComprehensionsでモナド内包表記が有効になるのか
これはなかなかおもしろいな

253 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 06:36:23.36 ]
>>252
詳しい解説サンクス
それならPerl忍者が荒らすのも分かる気がする(´・ω・`)

254 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 07:21:11.08 ]
>>249
じゃあ、本は無しにしようか。

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

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

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

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

正直言って、>>236 の例では恩恵が実感できない。
「好きな書き方で書けば良い」という理由だけで復活したとも思えん。
それでは Perl みたいじゃないか。

255 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 07:28:03.96 ]
内包表記なんて長いコードに使うもんじゃない
(長くなるならmapなりfilterなりdoなり使うべき)
だから短いコードだから内包表記で書く意義が
分からないってワケじゃないだろう

ってことは、こっちは>>254様が納得する理由をエスパーしてやらなきゃ
ダメってことなワケだが、なんでそんなことしてやる必要あるの?

256 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 07:28:37.24 ]
>>254
>>247

257 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 07:49:04.08 ]
>>254
hackage.haskell.org/trac/ghc/ticket/4370
hackage.haskell.org/trac/ghc/wiki/MonadComprehensions



258 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 12:01:23.74 ]
サーセン
Data.Vectorで組んで動いたコードをData.Vector.Unboxedに切り替えようと思ったんすよ

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

どゆことっすか?ファンクタでしょ?

259 名前:デフォルトの名無しさん mailto:sage [2012/11/05(月) 15:54:09.94 ]
>>258
メッセージ全文うpらないのは甘え






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

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

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