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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトのモナドさん2013/08/10(土) NY:AN:NY.AN
関数型プログラミング言語 Haskellについて語るスレです。

前スレ: 関数型プログラミング言語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.96
へーhaskellのfoldrって前から処理なんだ
0686デフォルトの名無しさん2013/10/03(木) 12:55:59.78
>>684
途中で処理を止めるのも問題なくできるよ
答を書いてしまうと、

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.26
遅延評価は難しいね〜
0688デフォルトの名無しさん2013/10/03(木) 16:53:16.72
私はHaskellを続けるよ
0689デフォルトの名無しさん2013/10/03(木) 17:42:54.96
runMaybeT . foldr mplus mzero . map MaybeT
0690デフォルトの名無しさん2013/10/03(木) 17:44:28.46
おっと、foldr mplus mzero は msum だったか
06916772013/10/03(木) 17:57:12.47
>>689
それ気づかなかったわ
標準ライブラリでかっこよく書けない云々は間違いだった。すまん
(「標準ライブラリ」の定義が曖昧なのは気にしないことにして)
0692デフォルトの名無しさん2013/10/03(木) 18:49:01.55
Hackage 見たら MaybeT 二つあったし、標準って感じじゃないよな。
モナドになると気づけば、Hackage にあるのは間違いないから探すだけだった。
0693デフォルトの名無しさん2013/10/03(木) 19:17:45.26
transformersはHaskell Platformに入ってるからある意味標準と言って良いと思う
(Haskell2010にはないから、その意味では標準じゃない)
0694デフォルトの名無しさん2013/10/03(木) 19:34:45.70
>>676
そりゃあんだけ型が合わないだのなんだのコンパイラに突っぱねられれば怨みも持つさ

インテリにいびられるストレスと似たものを感じるからね

これを克服するには自分もインテリ気質にならざるを得ない
0695デフォルトの名無しさん2013/10/03(木) 23:29:35.77
ちょっと教えて欲しいんだけど
・遅延評価のメリット
・Haskellで書けるプログラムの範囲
この2点が様々なブログを読んでも抽象的にしか書いてないんだけど
この辺ちゃんと説明してくだちぃ
0696デフォルトの名無しさん2013/10/03(木) 23:58:38.25
>>695
正直、真面目に答えて欲しいのなら真面目に訊いてこい、と言いたい。


それはそれとして、抽象的なのがちゃんとしていないというのなら、
具体例を挙げればいいのか?

・遅延評価のメリット
素直に計算式を書くだけで、余計な計算をしない処理をしてくれる。
例えば画像処理で、画像に回転を施してからトリミングするとする。
Haskell ならこの通りに素直に (trim . rotate) という関数を画像に適用すれば、
トリミングで失われる画素の回転処理は自動的に省かれる。

・Haskellで書けるプログラムの範囲
質問の意図が分からん。
この範囲までだよと言ったら、君はそれ以上の可能性は一切排除してしまうのか?

逆に訊きたいが、Java や C や Python などで書けるプログラムの範囲などはどうなんだ?
0697デフォルトの名無しさん2013/10/04(金) 00:08:30.36
むしろHaskell以外の言語は書けるプログラムの範囲を具体的に定めているのかと聞きたい
0698デフォルトの名無しさん2013/10/04(金) 01:00:54.59
みんなHaskellを特別視してる
クラス委員長のように取っ付きにくいと思って攻め倦ねてる
0699デフォルトの名無しさん2013/10/04(金) 01:06:02.03
>・遅延評価のメリット
たらい回し関数なんかの場合の遅延評価の恩恵は、別にHaskellである必要はなく、
クロージャを備えた言語ならどれでもできる
Haskellならではといえば、ループをリスト処理に簡単に落とし込めるということかな
逐次IO処理をリスト処理で行えるのは思考とコードの節約にもなり、高アドバンテージ

>・Haskellで書けるプログラムの範囲
チューリング完全な以上、どの高級言語も同じ範囲に収まっている
対象の分野に対して記述しやすく実行効率の良い言語を選ぶしかない
なんでもかんでもHaskellで書こうというのは我慢フェチの変態オナニー
0700デフォルトの名無しさん2013/10/04(金) 03:53:39.34
>>698
それです

>>699
あー、すごいわかりやすい、やはり言語ごとの得手不得手で使い分けですね
逐次IO処理ってForeachループ内の処理を共通メソッド化できるって考えですかね?
だとしたら無名関数便利だからJavascriptやラムダ式が便利ってのと何が違うんですかね
0701デフォルトの名無しさん2013/10/04(金) 05:53:38.68
もちろん言語は適材適所で使い分けなんだけど、
Haskellに関しては得手不得手がそこまではっきりしてないので、
「なんでもかんでもHaskellで書こう」という奴が多いように見えるかも
個人的には、「PCで動くプログラムはOSとゲーム以外全部Haskellで書く」
くらいの選択はおかしくないと思う
0702デフォルトの名無しさん2013/10/04(金) 07:28:19.50
>>696 の意見はスルーか

何度やられても、この寂しさには慣れん・・・
0703デフォルトの名無しさん2013/10/04(金) 07:40:48.98
>>702
態度が説教臭い上に挙げてる例が非現実的だからだろ
ピクセル単位で評価を遅延してたらオーバーヘッドがきつ過ぎで使いものにならん

構って欲しいならセックスでも配信してりゃいいんじゃね
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なデータを使うことで
プログラムの見通しが良くなるのが関数型のメリットなんだけど

例えばリストがimmutableだと、mapを実装するときに正格評価では
末尾再帰にしないとスタックオーバーフローする可能性があるし、
末尾再帰にすると最後にreverseが必要な実装になっちゃうんだよね
でも遅延評価だとそれが無いのがメリット
0706デフォルトの名無しさん2013/10/04(金) 09:23:50.48
デフォルトで遅延評価でないような実装(eager haskell)でも遅延評価を扱う仕組みは用意されているんだろうな
0707デフォルトの名無しさん2013/10/04(金) 12:38:50.03
>>703
Repa でピクセル単位で画像処理しているのだが
0708デフォルトの名無しさん2013/10/04(金) 12:43:59.63
>702 :デフォルトの名無しさん:2013/10/04(金) 07:28:19.50
>俺 >>696 の意見はスルーか
>何度やられても、この寂しさには慣れん・・・

こういうクズにはクズのレスの1個前、1個後にレスつけて
クズがスルーされてる感を出すのが効くんだよなぁww

クズの書き込みIDが696だったら すぐさま自作自演で695と697へアンカw
それにはさまれたクズの書き込みはアンカがついてないのでスルーされている(笑)

これがめちゃくちゃ効く(笑)
0709デフォルトの名無しさん2013/10/04(金) 12:45:09.27
>>708
何でそんな心に響く書き込みできるの?
何で?
0710デフォルトの名無しさん2013/10/04(金) 12:46:37.90
>>702
あなたのようなレス乞食は社会から必要とされてない
お亡くなりください

>>708
それやるとそいつの書き込みだけ惨めに見えますね
0711デフォルトの名無しさん2013/10/04(金) 12:48:44.30
>>708
四面楚歌スルーと命名しよう
サンドイッチスルーでもいいですね
いじめスルーですか?
もっといい名前ありますか?
孤立スルー
0712デフォルトの名無しさん2013/10/04(金) 13:50:04.61
今日からLeksahでハスケります
よろしくお願いしますm(_ _)m
07137002013/10/04(金) 13:51:04.75
>>712です
0714デフォルトの名無しさん2013/10/04(金) 14:06:00.44
>>711
他にネーミングないか?
>>710
だなレス乞食みたいなクズはこのスレにいらない
早急西ねってかんじだな
0715デフォルトの名無しさん2013/10/04(金) 14:08:21.33
>>711
ん?いじめでよくねw

>>714
まあそうカッカするな
コリアンかもしれないしな
スンドウゥブはうまいけどコリアンハスカーはいただけないぜ
0716デフォルトの名無しさん2013/10/04(金) 14:10:00.15
このスレ機能してねーじゃん
どうしたんだよ
0717デフォルトの名無しさん2013/10/04(金) 17:40:42.04
>>714
シケイン(スルー)
0718デフォルトの名無しさん2013/10/04(金) 19:57:03.46
ブッコワレケル!!
0719デフォルトの名無しさん2013/10/04(金) 23:04:53.10
(a, b, c, d) <- (,,,) <$> newIORef [] <*> newIORef [] <*> newIORef [] <*> newIORef []
これって fold と replicate 4 (new IORef []) で書ける?
0720デフォルトの名無しさん2013/10/04(金) 23:28:07.92
>>707
Repa って並列で実行とかじゃないの?
ピクセル単位で遅延って感じになるの?
0721デフォルトの名無しさん2013/10/04(金) 23:29:56.93
そもそも trim . rotate の遅延って怪しいけど
0722デフォルトの名無しさん2013/10/05(土) 00:21:36.88
Amazonで Haskell で洋書検索したらアダルト商品ばっかりで吹いた
0723デフォルトの名無しさん2013/10/05(土) 00:29:29.72
>>722
いや・・・出た事無いけど・・・。
普段から検索してる物で検索結果が変わったりするんだろうか・・・
0724デフォルトの名無しさん2013/10/05(土) 00:38:33.68
もしかして私だけ?
http://www.dotup.org/uploda/www.dotup.org4553317.jpg
0725デフォルトの名無しさん2013/10/05(土) 01:06:19.39
女だ!2chに女が出たぞー!焼き払えー!
0726デフォルトの名無しさん2013/10/05(土) 02:44:21.78
どうやら Spencer Haskell さんというエロ小説家がいるようだ
0727デフォルトの名無しさん2013/10/05(土) 03:52:38.15
ファイルのMD5ハッシュ値を取り扱うライブラリを推薦してください
0728デフォルトの名無しさん2013/10/05(土) 06:54:17.61
>>719
[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
>>724
普段エロばかり検索してるんだからもう
…というわけではなくソート順を「出版年数が新しい順番」にすればうちでもなるよ
0730デフォルトの名無しさん2013/10/05(土) 09:34:18.29
>>728
ありがとう
確かにタプルに拘る理由は無かった
0731デフォルトの名無しさん2013/10/05(土) 12:55:47.35
すごいH
0732デフォルトの名無しさん2013/10/05(土) 18:05:23.42
はっかったっのっ
0733デフォルトの名無しさん2013/10/06(日) 01:34:23.60
PHPとかWEBプログラミングやってる人スカイプしてくれ
色々教えてくれ
treesnake2ですじゃあよろしく
0734デフォルトの名無しさん2013/10/06(日) 01:35:04.28
>>733
友達になりましょう
0735デフォルトの名無しさん2013/10/06(日) 01:38:29.21
教えがいがありますね
0736デフォルトの名無しさん2013/10/06(日) 17:42:31.35
>>733
コンタクト送りました
0737デフォルトの名無しさん2013/10/06(日) 17:43:34.02
>>733
ん?いちいちここで募集するな
わかったか
LINEで募集かけてこいやキチガイ
0738デフォルトの名無しさん2013/10/06(日) 17:46:01.69
駅員「乗車券とかはお餅ですか?」
733「いえ、ちがいます」
駅員「いや、ちがうじゃなくて、お餅じゃないんですか?」
ぼく「酢イカはあるけどお餅じゃないです」
駅員「お餅の酢イカは残高不足ですが、
お金があればお餅の酢イカにチャージできますよ」
733「すっぱそうですね」
駅員「お金はお餅ですか?」
733「ちがいます」
駅員「えっ」
733「えっ」
駅員「はぁ?お金もお餅じゃないのですか?」
733「あたりまえじゃないですか」
駅員「ちょっとこい」
0739デフォルトの名無しさん2013/10/06(日) 19:02:23.55
ぼく「酢イカはあるけどお餅じゃないです」

これ何なの?
0740デフォルトの名無しさん2013/10/06(日) 19:13:54.67
酢イカ is not equal お餅
0741デフォルトの名無しさん2013/10/06(日) 21:41:08.46
is not equal toな
0742デフォルトの名無しさん2013/10/06(日) 23:39:46.15
doesn't equal
0743デフォルトの名無しさん2013/10/07(月) 00:01:17.15
そういうことじゃなくて、

ぼく「酢イカはあるけどお餅じゃないです」

これだけ取ってつけた感じでわざとらしい
言い回しも変だし

この「ぼく」は何を勘違いしたらこのセリフが自然に出てくる?
0744デフォルトの名無しさん2013/10/07(月) 00:20:06.00
気にするな
Haskellできない奴が頑張って作ったんだ
なぜここに貼ったのかわからないし
元ネタのコピペに全然追いつけてないけど
それでも誰かが頑張って作ったものではあるんだ
0745デフォルトの名無しさん2013/10/07(月) 09:35:10.68
>>743はICOCA圏在住
0746デフォルトの名無しさん2013/10/07(月) 09:38:33.09
move743 :: ICOCA a -> ICOCA a
0747デフォルトの名無しさん2013/10/07(月) 09:48:22.67
記者の眼 - Haskell使いの高頻度取引の会社にお邪魔した:ITpro
http://itpro.nikkeibp.co.jp/article/Watcher/20131003/508622/
0748デフォルトの名無しさん2013/10/07(月) 12:07:38.58
ここがcamlspotterさんの会社?
0749デフォルトの名無しさん2013/10/07(月) 12:25:45.86
きゃみば様はスタンダードチャターズ
鶴はmaoeさんとあと一人は忘れた
0750デフォルトの名無しさん2013/10/07(月) 12:26:23.95
スタンダードチャータード
0751デフォルトの名無しさん2013/10/07(月) 16:42:29.88
>>747
華やかそうでええのう・・・。

というか、優秀な外国人がどこでも出来る仕事をわざわざ日本にきて
やってることに驚いたw
0752デフォルトの名無しさん2013/10/07(月) 17:37:20.14
Haskellって実社会で役に立ってんの?
0753デフォルトの名無しさん2013/10/07(月) 18:06:52.86
さぁね (・∀・)ニヤニヤ
0754デフォルトの名無しさん2013/10/07(月) 19:29:25.68
2+2=5
0755デフォルトの名無しさん2013/10/07(月) 22:17:19.03
スレが水虫になった気分
0756デフォルトの名無しさん2013/10/08(火) 02:04:18.43
実社会で役に立ってるのは体育会系のリーマンだけです
0757デフォルトの名無しさん2013/10/08(火) 02:26:19.55
ここでいう実社会ってRealWorldのことですか?
0758デフォルトの名無しさん2013/10/08(火) 17:20:55.82
--enable-executable-profiling と -p とにはどのような関わりがありますか?
0759デフォルトの名無しさん2013/10/08(火) 18:17:12.71
C++の限界
http://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
>>759
上の2つはグラボのパワー使ってるの知らないのかな。
0762デフォルトの名無しさん2013/10/08(火) 21:43:14.85
Haskellの皆さんにお聞きします
株を買おうと思うんですが
ここヤバいよ!っていう株教えてください
0763デフォルトの名無しさん2013/10/08(火) 21:51:40.65
ミクシィとかグリーなんかが順調にヤバいよ
0764デフォルトの名無しさん2013/10/08(火) 22:10:45.45
社会インフラのコードの「ソースコード」のほとんどがアセンブラな件
0765デフォルトの名無しさん2013/10/08(火) 23:33:40.92
なにそれ、怖い
金融とかトレーディングとか?
0766デフォルトの名無しさん2013/10/09(水) 01:13:39.23
道路の信号と鉄道とATM

飛行機はアセンブラ埋め込んだ高級言語
今で言うDSL
0767デフォルトの名無しさん2013/10/09(水) 01:43:12.88
超・高信頼性が要求される仕事では、技術者の確保が難しい言語や仕様自体にバグがある言語や成長の途中であると公言するような言語は使えない
となると、Cかアセンブラだけというオチ
COBOLももう怪しい
0768デフォルトの名無しさん2013/10/09(水) 05:43:21.81
Haskellで遊んでみたいけど探してもまったく案件ないんだよな
0769デフォルトの名無しさん2013/10/09(水) 09:53:08.13
>>768
Haskellで言語コンバータ作ればいいじゃん。
0770デフォルトの名無しさん2013/10/09(水) 11:43:07.53
C++の限界
(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.14
あるから・・・Haskellにも3Dゲームあるから(震え声

http://www.haskell.org/wikiupload/c/c2/Frag1.png
0772デフォルトの名無しさん2013/10/09(水) 13:39:21.18
> くやしいのうw そうやって"できない理由"を探して永久に慰め続けろよ。

自分の成果で語れよw
0773デフォルトの名無しさん2013/10/09(水) 13:51:10.16
C++の限界
http://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.47
Haskellってこんなもんなんだ
0775デフォルトの名無しさん2013/10/09(水) 14:59:11.53
なんのネタ
0776デフォルトの名無しさん2013/10/09(水) 16:34:14.89
限界がある時点でゴミ
0777デフォルトの名無しさん2013/10/09(水) 20:03:26.26
あの、チューリングマシン っていうのは……
えっと……
0778デフォルトの名無しさん2013/10/09(水) 20:25:14.58
つまりさ、フレームワーク無しで一からフルスクラッチできるPGなんて日本にどれだけいるのっと
0779デフォルトの名無しさん2013/10/09(水) 20:44:42.51
フルスクラッチで何作るのさ?
0780デフォルトの名無しさん2013/10/09(水) 20:47:07.02
1/1スケールのすごいぞうさん(日本版)
0781デフォルトの名無しさん2013/10/09(水) 21:49:27.27
実用とか気にし過ぎ

おもちゃとしてもっと気楽に楽しくハスケればいいのに
0782デフォルトの名無しさん2013/10/09(水) 23:35:39.61
>>777
チューリングマシンが〜ってのは、人間がコーディングするという前提を無視した空想上のお話
オカルト
0783デフォルトの名無しさん2013/10/09(水) 23:47:46.54
>>770
体育会系根性論でGPU有無の差をぶちやぶれると思ってる脳筋はどっかいけよ。
0784デフォルトの名無しさん2013/10/10(木) 00:32:43.14
っとわめくモヤシでした
■ このスレッドは過去ログ倉庫に格納されています