関数型プログラミング言語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/
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.680755デフォルトの名無しさん
2013/10/07(月) 22:17:19.030756デフォルトの名無しさん
2013/10/08(火) 02:04:18.430757デフォルトの名無しさん
2013/10/08(火) 02:26:19.550758デフォルトの名無しさん
2013/10/08(火) 17:20:55.820759デフォルトの名無しさん
2013/10/08(火) 18:17:12.71http://www.digitaltrends.com/wp-content/uploads/2013/02/gtav.jpg
C#の限界
http://www.stfuandplay.com/images/uploads/GunsIO-TOP.jpg
Haskellの限界
http://www.geocities.jp/takascience/haskell/monadius03.png
0760デフォルトの名無しさん
2013/10/08(火) 20:43:30.32とりあえずNikki and the Robotsを挙げろや
0761デフォルトの名無しさん
2013/10/08(火) 20:52:58.99上の2つはグラボのパワー使ってるの知らないのかな。
0762デフォルトの名無しさん
2013/10/08(火) 21:43:14.85株を買おうと思うんですが
ここヤバいよ!っていう株教えてください
0763デフォルトの名無しさん
2013/10/08(火) 21:51:40.650764デフォルトの名無しさん
2013/10/08(火) 22:10:45.450765デフォルトの名無しさん
2013/10/08(火) 23:33:40.92金融とかトレーディングとか?
0766デフォルトの名無しさん
2013/10/09(水) 01:13:39.23飛行機はアセンブラ埋め込んだ高級言語
今で言うDSL
0767デフォルトの名無しさん
2013/10/09(水) 01:43:12.88となると、Cかアセンブラだけというオチ
COBOLももう怪しい
0768デフォルトの名無しさん
2013/10/09(水) 05:43:21.810769デフォルトの名無しさん
2013/10/09(水) 09:53:08.13Haskellで言語コンバータ作ればいいじゃん。
0770デフォルトの名無しさん
2013/10/09(水) 11:43:07.53(p)http://www.digitaltrends.com/wp-content/uploads/2013/02/gtav.jpg
C#の限界
(p)http://www.stfuandplay.com/images/uploads/GunsIO-TOP.jpg
Haskellの限界
(p)http://www.geocities.jp/takascience/haskell/monadius03.png
>上の2つはグラボのパワー使ってるの知らないのかな。
くやしいのうw そうやって"できない理由"を探して永久に慰め続けろよ。
0771デフォルトの名無しさん
2013/10/09(水) 11:49:28.14http://www.haskell.org/wikiupload/c/c2/Frag1.png
0772デフォルトの名無しさん
2013/10/09(水) 13:39:21.18自分の成果で語れよw
0773デフォルトの名無しさん
2013/10/09(水) 13:51:10.16http://www.digitaltrends.com/wp-content/uploads/2013/02/gtav.jpg
C#の限界
http://www.stfuandplay.com/images/uploads/GunsIO-TOP.jpg
Haskellの限界
http://www.haskell.org/wikiupload/c/c2/Frag1.png (new!)
0774デフォルトの名無しさん
2013/10/09(水) 14:05:53.470775デフォルトの名無しさん
2013/10/09(水) 14:59:11.530776デフォルトの名無しさん
2013/10/09(水) 16:34:14.890777デフォルトの名無しさん
2013/10/09(水) 20:03:26.26えっと……
0778デフォルトの名無しさん
2013/10/09(水) 20:25:14.580779デフォルトの名無しさん
2013/10/09(水) 20:44:42.510780デフォルトの名無しさん
2013/10/09(水) 20:47:07.020781デフォルトの名無しさん
2013/10/09(水) 21:49:27.27おもちゃとしてもっと気楽に楽しくハスケればいいのに
0782デフォルトの名無しさん
2013/10/09(水) 23:35:39.61チューリングマシンが〜ってのは、人間がコーディングするという前提を無視した空想上のお話
オカルト
0783デフォルトの名無しさん
2013/10/09(水) 23:47:46.54体育会系根性論でGPU有無の差をぶちやぶれると思ってる脳筋はどっかいけよ。
0784デフォルトの名無しさん
2013/10/10(木) 00:32:43.14■ このスレッドは過去ログ倉庫に格納されています