関数型プログラミング言語Haskell Part23
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトのモナドさん
2013/08/10(土) NY:AN:NY.AN前スレ: 関数型プログラミング言語Haskell Part22
http://toro.2ch.net/test/read.cgi/tech/1364009659/
haskell.org
http://www.haskell.org/
日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.shido.info/hs/
過去ログ (10〜)
Part21 ttp://toro.2ch.net/test/read.cgi/tech/1358702176/
Part20 ttp://toro.2ch.net/test/read.cgi/tech/1350428908/
Part19 ttp://toro.2ch.net/test/read.cgi/tech/1340760070/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
0655デフォルトの名無しさん
2013/10/03(木) 00:43:10.99ん?何を言ってんだお前は?
クズみたいな回答してるお前はまじこのスレの恥
さっさと消えろ
0656デフォルトの名無しさん
2013/10/03(木) 00:44:25.01責任もって嘘教えた>>651はもうこのスレにこないでください
金輪際PHPをかたるのやめてくださいねw
>>653
震え声?
なにびびってんだ?
ガンガンたたけ
0657デフォルトの名無しさん
2013/10/03(木) 00:45:03.54このスレ壊そう
0658デフォルトの名無しさん
2013/10/03(木) 00:46:14.18知った相手に震えるとかカスだな
お前も同等のゴミ
MVCとかいってる情報乞食も同等の雑魚
0659デフォルトの名無しさん
2013/10/03(木) 00:46:55.95何一人で決めちゃってんの?
0660デフォルトの名無しさん
2013/10/03(木) 00:50:50.660661デフォルトの名無しさん
2013/10/03(木) 01:04:05.37プライド高い奴が多すぎて
チームプレーが出来ない所
0662デフォルトの名無しさん
2013/10/03(木) 01:06:24.960663デフォルトの名無しさん
2013/10/03(木) 01:10:56.97まだまだ使い慣れていません
オーダーは間違っていないと思うんですが
作業終盤にあたって盛り返すことができずやられてしまいます
どうすればいいんでしょうか?
やっぱりバフはくるのでしょうか?
不安です
朝鮮鯖でプレーしていますが
自分はマイクロ操作に自信があるのですが・・・それでも未だにプラチナ昇格できません
勝つ方法教えてください
0664デフォルトの名無しさん
2013/10/03(木) 01:13:45.00下手糞noobはきえろ
アインストールしろクズw
何で負けてるのにやるの?Mなの?気持ち悪いよ
>>658
情報乞食ってゆうけど
ここも教えて君ばっかりになっちゃったね(^^;
なんてゆーか荒らしばっかり
まともに会話すらできないもん
0665デフォルトの名無しさん
2013/10/03(木) 01:14:28.43前のHaskellスレに戻って!!!
0666デフォルトの名無しさん
2013/10/03(木) 01:15:30.020667デフォルトの名無しさん
2013/10/03(木) 01:40:34.050668デフォルトの名無しさん
2013/10/03(木) 01:41:50.88開始3分裏小屋からのエジ鎌ラッシュ。これで勝つる
0669デフォルトの名無しさん
2013/10/03(木) 02:11:52.87おっ こんな所でRoRが出てくるとは思わなんだ
0670デフォルトの名無しさん
2013/10/03(木) 08:48:08.58ありがとうございます
f :: [Int] -> IO [Int]
f (x:xs) = ..
case r of
[] -> f xs
r -> [r]
のように f を再帰で書き直せばできます
0671デフォルトの名無しさん
2013/10/03(木) 10:01:59.980672デフォルトの名無しさん
2013/10/03(木) 10:26:44.48密度の濃い時間にするというか。
RPGなんかと違って、たたかうを選んでればレベルが上がるわけではないので
0673デフォルトの名無しさん
2013/10/03(木) 10:28:06.01ゲームッカスは消えろ
>>672
Haskellなんてのは有り体に言って戦争なんだから、 場に出してるお互いのカードに文句を言う意味はない。
相手のカードが揃っていないなら虫けらのように潰せばいいだけ。
他にいい方法があればデッキを組み直すだけ。
0674デフォルトの名無しさん
2013/10/03(木) 10:28:55.28というかHaskell自体趣味だからエンジョイ勢は一生気持ちよくなれる選択肢をやっていけば良い。
でも勝ちたい奴はそこを我慢して自分という人間と状況に合った選択肢を選ばなければならない。
これはHaskellをする上で明確に意識しなければいけない
0675デフォルトの名無しさん
2013/10/03(木) 10:29:47.050676デフォルトの名無しさん
2013/10/03(木) 10:49:33.380677デフォルトの名無しさん
2013/10/03(木) 11:10:53.99なんでfを書き換える話になってるんだw
>>648に戻ると、(>>654も言ってるように)リストを前から辿る関数を書きたいなら
愚直に再帰で書けばいい
a648 :: (Int -> IO (Maybe Int)) -> [Int] -> IO (Maybe Int)
a648 f [] = (ここを埋める)
a648 f (x:xs) = (ここを埋める)
これができたら、foldrを使って書き直すのは簡単なので好みで
ただし、それ以上かっこよく書くのは標準ライブラリでは無理だと思う
標準に付け加えるとしたら、
newtype MonadicFind m a = MonadicFind (m (Maybe a))
instance (Monad m) => Monoid (MonadicFund m a) where...
とかかな
0678デフォルトの名無しさん
2013/10/03(木) 11:24:45.51なんでfoldrが出てくるのか理解できないんですけど
0679デフォルトの名無しさん
2013/10/03(木) 11:28:08.09軸は3つある。
戦闘で勝つこと、欲張ること、相手のワーカーを狩ること。
戦闘で勝つために必要なのは編成とマイクロだ。相手より強い編成を作り、上手く扱えたほうが勝つ。
欲張るために必要なものは、すべてのHaskellが最初から手にしている。
Haskellというのは結局のところ定点防衛力に優れた種族だということである。
Bunkerがある。動けないが序盤に倍のMarineの攻撃を守れる。
Tankがある。シージすると動けないが先にシージしたほうが強い。自陣にいれば先にシージできる。
そうそう攻め切れない。しかしだからといって攻めたら勝てないわけではない。
0680デフォルトの名無しさん
2013/10/03(木) 11:28:54.78Haskellの考察
ワーカーを狩ればユニットの量が変わってくる。すぐに勝つことはできなくても5分後に勝つことは容易である。
Haskellの防衛力が高いといっても、Haskellの防衛戦力は中々動けないのである。変なところからくるハラスへの対応には手間取りやすい。つまりワーカーを狩る隙がある。
しかし正面からくるユニットにはこの防衛力が多大な働きをする。普通地上からベースへの入り口は一つしかないのだからTankが動けなくても問題はない。
つまり乱暴にいうとハラスで攻めてTankで守るか、欲張ってTankとハラス対策ユニットで守ればいいということである。
もちろん他にもTankを使わずに動きまわるビルドがあったりAirが絡んだりと色々なジャンケンが存在する。重要なのはいかにして編成差を作れるか、内政差を作れるかである。
0681663
2013/10/03(木) 11:29:58.57ありがとうございます
0682デフォルトの名無しさん
2013/10/03(木) 11:34:09.06リストを前から順番に処理する関数は大抵foldrで書ける
0683デフォルトの名無しさん
2013/10/03(木) 11:48:33.140684デフォルトの名無しさん
2013/10/03(木) 12:30:40.73あの、そういうことじゃないんですよ。
たとえば、sequence の実装は↓のように foldr つかってるんだけど
すべてのmonadicな値を*評価*してしまうんです。
sequence ms = foldr k (return []) ms
where
k m m' = do { x <- m; xs <- m'; return (x:xs) }
>>648の要求は「条件が合ったら以降のリスト要素を評価したくない」といっていて、
あなたの回答は要件を満たせていませんよと言ってるんです。
0685デフォルトの名無しさん
2013/10/03(木) 12:49:57.960686デフォルトの名無しさん
2013/10/03(木) 12:55:59.78途中で処理を止めるのも問題なくできるよ
答を書いてしまうと、
a648 :: (Int -> IO (Maybe Int)) -> [Int] -> IO (Maybe Int)
a648 f l = foldr g (return Nothing) l
where
g x next = do
r <- f x
case r of
Nothing -> next
Just v -> return (Just v)
-- てすと
main = a648 f [0..10] >>= print
where
f i = do
print i
return $ if odd i then Just i else Nothing
0687デフォルトの名無しさん
2013/10/03(木) 15:03:14.260688デフォルトの名無しさん
2013/10/03(木) 16:53:16.720689デフォルトの名無しさん
2013/10/03(木) 17:42:54.960690デフォルトの名無しさん
2013/10/03(木) 17:44:28.460691677
2013/10/03(木) 17:57:12.47それ気づかなかったわ
標準ライブラリでかっこよく書けない云々は間違いだった。すまん
(「標準ライブラリ」の定義が曖昧なのは気にしないことにして)
0692デフォルトの名無しさん
2013/10/03(木) 18:49:01.55モナドになると気づけば、Hackage にあるのは間違いないから探すだけだった。
0693デフォルトの名無しさん
2013/10/03(木) 19:17:45.26(Haskell2010にはないから、その意味では標準じゃない)
0694デフォルトの名無しさん
2013/10/03(木) 19:34:45.70そりゃあんだけ型が合わないだのなんだのコンパイラに突っぱねられれば怨みも持つさ
インテリにいびられるストレスと似たものを感じるからね
これを克服するには自分もインテリ気質にならざるを得ない
0695デフォルトの名無しさん
2013/10/03(木) 23:29:35.77・遅延評価のメリット
・Haskellで書けるプログラムの範囲
この2点が様々なブログを読んでも抽象的にしか書いてないんだけど
この辺ちゃんと説明してくだちぃ
0696デフォルトの名無しさん
2013/10/03(木) 23:58:38.25正直、真面目に答えて欲しいのなら真面目に訊いてこい、と言いたい。
それはそれとして、抽象的なのがちゃんとしていないというのなら、
具体例を挙げればいいのか?
・遅延評価のメリット
素直に計算式を書くだけで、余計な計算をしない処理をしてくれる。
例えば画像処理で、画像に回転を施してからトリミングするとする。
Haskell ならこの通りに素直に (trim . rotate) という関数を画像に適用すれば、
トリミングで失われる画素の回転処理は自動的に省かれる。
・Haskellで書けるプログラムの範囲
質問の意図が分からん。
この範囲までだよと言ったら、君はそれ以上の可能性は一切排除してしまうのか?
逆に訊きたいが、Java や C や Python などで書けるプログラムの範囲などはどうなんだ?
0697デフォルトの名無しさん
2013/10/04(金) 00:08:30.360698デフォルトの名無しさん
2013/10/04(金) 01:00:54.59クラス委員長のように取っ付きにくいと思って攻め倦ねてる
0699デフォルトの名無しさん
2013/10/04(金) 01:06:02.03たらい回し関数なんかの場合の遅延評価の恩恵は、別にHaskellである必要はなく、
クロージャを備えた言語ならどれでもできる
Haskellならではといえば、ループをリスト処理に簡単に落とし込めるということかな
逐次IO処理をリスト処理で行えるのは思考とコードの節約にもなり、高アドバンテージ
>・Haskellで書けるプログラムの範囲
チューリング完全な以上、どの高級言語も同じ範囲に収まっている
対象の分野に対して記述しやすく実行効率の良い言語を選ぶしかない
なんでもかんでもHaskellで書こうというのは我慢フェチの変態オナニー
0700デフォルトの名無しさん
2013/10/04(金) 03:53:39.34それです
>>699
あー、すごいわかりやすい、やはり言語ごとの得手不得手で使い分けですね
逐次IO処理ってForeachループ内の処理を共通メソッド化できるって考えですかね?
だとしたら無名関数便利だからJavascriptやラムダ式が便利ってのと何が違うんですかね
0701デフォルトの名無しさん
2013/10/04(金) 05:53:38.68Haskellに関しては得手不得手がそこまではっきりしてないので、
「なんでもかんでもHaskellで書こう」という奴が多いように見えるかも
個人的には、「PCで動くプログラムはOSとゲーム以外全部Haskellで書く」
くらいの選択はおかしくないと思う
0702デフォルトの名無しさん
2013/10/04(金) 07:28:19.50何度やられても、この寂しさには慣れん・・・
0703デフォルトの名無しさん
2013/10/04(金) 07:40:48.98態度が説教臭い上に挙げてる例が非現実的だからだろ
ピクセル単位で評価を遅延してたらオーバーヘッドがきつ過ぎで使いものにならん
構って欲しいならセックスでも配信してりゃいいんじゃね
0704デフォルトの名無しさん
2013/10/04(金) 07:46:17.18強いて挙げるなら>>699の言ってる遅延リストとか、あとはDSLで再帰的な定義が書けるとか
後者の例は、たとえば文字列から式を読むパーサを書く場合、
parseExpr :: Parser Expr
parseExpr = (IntE <$> parseInt) <|> (string "(" <* parseExpr *> string ")") <|> ...
みたいに(細部は適当)書きたいんだけど、
遅延評価でなければparseExprが無限再帰を起こす
0705デフォルトの名無しさん
2013/10/04(金) 08:46:07.76プログラムの見通しが良くなるのが関数型のメリットなんだけど
例えばリストがimmutableだと、mapを実装するときに正格評価では
末尾再帰にしないとスタックオーバーフローする可能性があるし、
末尾再帰にすると最後にreverseが必要な実装になっちゃうんだよね
でも遅延評価だとそれが無いのがメリット
0706デフォルトの名無しさん
2013/10/04(金) 09:23:50.480707デフォルトの名無しさん
2013/10/04(金) 12:38:50.03Repa でピクセル単位で画像処理しているのだが
0708デフォルトの名無しさん
2013/10/04(金) 12:43:59.63>俺 >>696 の意見はスルーか
>何度やられても、この寂しさには慣れん・・・
こういうクズにはクズのレスの1個前、1個後にレスつけて
クズがスルーされてる感を出すのが効くんだよなぁww
クズの書き込みIDが696だったら すぐさま自作自演で695と697へアンカw
それにはさまれたクズの書き込みはアンカがついてないのでスルーされている(笑)
これがめちゃくちゃ効く(笑)
0709デフォルトの名無しさん
2013/10/04(金) 12:45:09.27何でそんな心に響く書き込みできるの?
何で?
0710デフォルトの名無しさん
2013/10/04(金) 12:46:37.90あなたのようなレス乞食は社会から必要とされてない
お亡くなりください
>>708
それやるとそいつの書き込みだけ惨めに見えますね
0711デフォルトの名無しさん
2013/10/04(金) 12:48:44.30四面楚歌スルーと命名しよう
サンドイッチスルーでもいいですね
いじめスルーですか?
もっといい名前ありますか?
孤立スルー
0712デフォルトの名無しさん
2013/10/04(金) 13:50:04.61よろしくお願いしますm(_ _)m
0715デフォルトの名無しさん
2013/10/04(金) 14:08:21.33ん?いじめでよくねw
>>714
まあそうカッカするな
コリアンかもしれないしな
スンドウゥブはうまいけどコリアンハスカーはいただけないぜ
0716デフォルトの名無しさん
2013/10/04(金) 14:10:00.15どうしたんだよ
0717デフォルトの名無しさん
2013/10/04(金) 17:40:42.04シケイン(スルー)
0718デフォルトの名無しさん
2013/10/04(金) 19:57:03.460719デフォルトの名無しさん
2013/10/04(金) 23:04:53.10これって fold と replicate 4 (new IORef []) で書ける?
0720デフォルトの名無しさん
2013/10/04(金) 23:28:07.92Repa って並列で実行とかじゃないの?
ピクセル単位で遅延って感じになるの?
0721デフォルトの名無しさん
2013/10/04(金) 23:29:56.930722デフォルトの名無しさん
2013/10/05(土) 00:21:36.880723デフォルトの名無しさん
2013/10/05(土) 00:29:29.72いや・・・出た事無いけど・・・。
普段から検索してる物で検索結果が変わったりするんだろうか・・・
0724デフォルトの名無しさん
2013/10/05(土) 00:38:33.68http://www.dotup.org/uploda/www.dotup.org4553317.jpg
0725デフォルトの名無しさん
2013/10/05(土) 01:06:19.390726デフォルトの名無しさん
2013/10/05(土) 02:44:21.780727デフォルトの名無しさん
2013/10/05(土) 03:52:38.150728デフォルトの名無しさん
2013/10/05(土) 06:54:17.61[a,b,c,d] <- replicateM 4 (newIORef [])
-- Control.Monadのソースから
replicateM n x = sequence (replicate n x)
sequence ms = foldr k (return []) ms
where k m m' = do { x <- m; xs <- m'; return (x:xs) }
0729デフォルトの名無しさん
2013/10/05(土) 07:57:35.49普段エロばかり検索してるんだからもう
…というわけではなくソート順を「出版年数が新しい順番」にすればうちでもなるよ
0730デフォルトの名無しさん
2013/10/05(土) 09:34:18.29ありがとう
確かにタプルに拘る理由は無かった
0731デフォルトの名無しさん
2013/10/05(土) 12:55:47.350732デフォルトの名無しさん
2013/10/05(土) 18:05:23.420733デフォルトの名無しさん
2013/10/06(日) 01:34:23.60色々教えてくれ
treesnake2ですじゃあよろしく
0734デフォルトの名無しさん
2013/10/06(日) 01:35:04.28友達になりましょう
0735デフォルトの名無しさん
2013/10/06(日) 01:38:29.210736デフォルトの名無しさん
2013/10/06(日) 17:42:31.35コンタクト送りました
0737デフォルトの名無しさん
2013/10/06(日) 17:43:34.02ん?いちいちここで募集するな
わかったか
LINEで募集かけてこいやキチガイ
0738デフォルトの名無しさん
2013/10/06(日) 17:46:01.69733「いえ、ちがいます」
駅員「いや、ちがうじゃなくて、お餅じゃないんですか?」
ぼく「酢イカはあるけどお餅じゃないです」
駅員「お餅の酢イカは残高不足ですが、
お金があればお餅の酢イカにチャージできますよ」
733「すっぱそうですね」
駅員「お金はお餅ですか?」
733「ちがいます」
駅員「えっ」
733「えっ」
駅員「はぁ?お金もお餅じゃないのですか?」
733「あたりまえじゃないですか」
駅員「ちょっとこい」
0739デフォルトの名無しさん
2013/10/06(日) 19:02:23.55これ何なの?
0740デフォルトの名無しさん
2013/10/06(日) 19:13:54.670741デフォルトの名無しさん
2013/10/06(日) 21:41:08.460742デフォルトの名無しさん
2013/10/06(日) 23:39:46.150743デフォルトの名無しさん
2013/10/07(月) 00:01:17.15ぼく「酢イカはあるけどお餅じゃないです」
これだけ取ってつけた感じでわざとらしい
言い回しも変だし
この「ぼく」は何を勘違いしたらこのセリフが自然に出てくる?
0744デフォルトの名無しさん
2013/10/07(月) 00:20:06.00Haskellできない奴が頑張って作ったんだ
なぜここに貼ったのかわからないし
元ネタのコピペに全然追いつけてないけど
それでも誰かが頑張って作ったものではあるんだ
0745デフォルトの名無しさん
2013/10/07(月) 09:35:10.680746デフォルトの名無しさん
2013/10/07(月) 09:38:33.090747デフォルトの名無しさん
2013/10/07(月) 09:48:22.67http://itpro.nikkeibp.co.jp/article/Watcher/20131003/508622/
0748デフォルトの名無しさん
2013/10/07(月) 12:07:38.580749デフォルトの名無しさん
2013/10/07(月) 12:25:45.86鶴はmaoeさんとあと一人は忘れた
0750デフォルトの名無しさん
2013/10/07(月) 12:26:23.950751デフォルトの名無しさん
2013/10/07(月) 16:42:29.88華やかそうでええのう・・・。
というか、優秀な外国人がどこでも出来る仕事をわざわざ日本にきて
やってることに驚いたw
0752デフォルトの名無しさん
2013/10/07(月) 17:37:20.140753デフォルトの名無しさん
2013/10/07(月) 18:06:52.860754デフォルトの名無しさん
2013/10/07(月) 19:29:25.68■ このスレッドは過去ログ倉庫に格納されています