関数型プログラミング言語 Haskell について語るスレです。
Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part32
https://mevius.5ch.net/test/read.cgi/tech/1548720347/
探検
関数型プログラミング言語Haskell Part33
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/02/10(月) 18:17:36.49ID:L6eYQqyh133デフォルトの名無しさん
2020/03/31(火) 00:52:19.85ID:K6rzEVwz ハスケラが目的のあるプログラミングなんてやるわけないじゃん
134デフォルトの名無しさん
2020/03/31(火) 11:43:52.10ID:0EnDwwx5 目的はお金でも知識でもいいよ
例えばお金自体が目的だったらそのお金が無駄に多過ぎるんじゃないかとか心配する必要はない
例えばお金自体が目的だったらそのお金が無駄に多過ぎるんじゃないかとか心配する必要はない
135デフォルトの名無しさん
2020/03/31(火) 13:19:45.47ID:OTxurRkT お金、知識でもいいけど
たいていは俺すげーしたいだけだから問題。
たいていは俺すげーしたいだけだから問題。
136デフォルトの名無しさん
2020/03/31(火) 13:55:00.32ID:0EnDwwx5 事前に目的を決めても「俺すげーしたいだけ」とかいう真の目的が後から出てくる
事前に嘘をついていたことか問題だと思えば沈黙が正解
だが隠し事をしていたことが問題だと思えば沈黙は悪
黙っているくらいなら嘘でも何か言った方がマシと思ってますます嘘が増える
事前に嘘をついていたことか問題だと思えば沈黙が正解
だが隠し事をしていたことが問題だと思えば沈黙は悪
黙っているくらいなら嘘でも何か言った方がマシと思ってますます嘘が増える
137デフォルトの名無しさん
2020/03/31(火) 18:03:32.10ID:pMTrfgV+ 存在しない敵に吠え続ける
138デフォルトの名無しさん
2020/03/31(火) 18:05:52.76ID:j91gJgzW >>135
学歴コンプやばそう
学歴コンプやばそう
139デフォルトの名無しさん
2020/03/31(火) 21:38:58.38ID:OTxurRkT だから金だろうと知識だろうと、学歴だろうとなんでもいいんだよ。
糞みたいなプライドで開発の邪魔しなけりゃな。
糞みたいなプライドで開発の邪魔しなけりゃな。
140デフォルトの名無しさん
2020/03/31(火) 23:05:18.94ID:gNdJtX6R 学歴だろうと知識だろうと仕事の腕前だろうと、
お前らキモオタクがそういう承認欲求を満たそうとすると裏目に出るだけだぞ
表ではお世辞であしらわれて、裏ではチョロいとナメられるのがオチ
お前らキモオタクがそういう承認欲求を満たそうとすると裏目に出るだけだぞ
表ではお世辞であしらわれて、裏ではチョロいとナメられるのがオチ
141デフォルトの名無しさん
2020/03/31(火) 23:24:14.95 トンデモを惹きつけてしまうのは Haskell の業
アイドルにストーカーがついてまわるのと抽象的構造が似ている
Haskell は高度知的アイドル型言語
アイドルにストーカーがついてまわるのと抽象的構造が似ている
Haskell は高度知的アイドル型言語
142デフォルトの名無しさん
2020/04/01(水) 02:53:00.79ID:Bo1VBV+d 確かにこのスレは厄介に粘着されてるしアイドルっぽい
143デフォルトの名無しさん
2020/04/01(水) 02:57:48.54ID:nmdW+DZF 地下アイドルの宿命だろう
144デフォルトの名無しさん
2020/04/01(水) 11:45:02.99ID:BVkSt5Rw 確かにここは地下アイドルスレみたいだな
145デフォルトの名無しさん
2020/04/01(水) 13:27:17.06ID:0siDwK7Q simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
学術巨大掲示板群: アルファ・ラボ
ttp://x0000.net
物理学 化学 数学 生物学 天文学 地理地学
IT 電子 工学 国語 方言 言語学 など
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
学術巨大掲示板群: アルファ・ラボ
ttp://x0000.net
物理学 化学 数学 生物学 天文学 地理地学
IT 電子 工学 国語 方言 言語学 など
146デフォルトの名無しさん
2020/04/01(水) 18:26:51.54ID:mH5B7GLX そういえばsinもcosも地上の人に粘着されてたのを思い出した
147デフォルトの名無しさん
2020/04/02(木) 01:11:13.45ID:I8hlhwK7 対偶と逆の区別もついてなさげな人の登場
148デフォルトの名無しさん
2020/04/02(木) 01:48:53.35ID:l/tHPd/2 Haskellって技術書少ないよな
みんな何で勉強してんの?
みんな何で勉強してんの?
149デフォルトの名無しさん
2020/04/02(木) 05:42:29.80ID:RR8wjO3M >>148
マイナー言語の割には多いと思うけど。
人気ランクが上のkotlinやclojure、elmは少ないし、同じぐらいの順位のprologやsmalltalkは新刊が出てなくて、昔出た書籍のほとんどが絶版している。
マイナー言語の割には多いと思うけど。
人気ランクが上のkotlinやclojure、elmは少ないし、同じぐらいの順位のprologやsmalltalkは新刊が出てなくて、昔出た書籍のほとんどが絶版している。
150デフォルトの名無しさん
2020/04/02(木) 06:21:32.55ID:RR8wjO3M 技術書は英語圏の次に多いと思う。
151デフォルトの名無しさん
2020/04/02(木) 06:33:57.84ID:6/i0fPdP >>148
特別なことはなく、ネットや本で学んだよ
例えば
・Thinking wih Types
型レベルプログラミングを学んだ
https://leanpub.com/thinking-with-types
・Optics By Example
lensに代表されるopticsを学んだ
https://leanpub.com/optics-by-example
・Hexagonal architecture
Haskell & DDD でアプリを作るパターンの一つを学んだ
https://blog.ploeh.dk/2016/03/18/functional-architecture-is-ports-and-adapters/
・Effect system
IOを安全に扱う方法を学んだ (正確にはモナドの合成を分かりやすく扱う方法)
DDDによるアプリ制作においてさっきのが戦略とすれば、こっちは戦術
http://okmij.org/ftp/Haskell/extensible/exteff.pdf
ライブラリもいくつかある
あと、Redditの投稿を追いかけていれば色々学べる
https://www.reddit.com/r/haskell/
と言うか、紹介しきれないほどの情報がネットに溢れているんだが
特別なことはなく、ネットや本で学んだよ
例えば
・Thinking wih Types
型レベルプログラミングを学んだ
https://leanpub.com/thinking-with-types
・Optics By Example
lensに代表されるopticsを学んだ
https://leanpub.com/optics-by-example
・Hexagonal architecture
Haskell & DDD でアプリを作るパターンの一つを学んだ
https://blog.ploeh.dk/2016/03/18/functional-architecture-is-ports-and-adapters/
・Effect system
IOを安全に扱う方法を学んだ (正確にはモナドの合成を分かりやすく扱う方法)
DDDによるアプリ制作においてさっきのが戦略とすれば、こっちは戦術
http://okmij.org/ftp/Haskell/extensible/exteff.pdf
ライブラリもいくつかある
あと、Redditの投稿を追いかけていれば色々学べる
https://www.reddit.com/r/haskell/
と言うか、紹介しきれないほどの情報がネットに溢れているんだが
152デフォルトの名無しさん
2020/04/02(木) 15:08:36.64ID:ttPPzFzn 情報収集のスキルは人それぞれでしょ
reddit はニッチなライブラリの質問とかリリース情報みたいなの多くね?
かったるくていちいち追ってられない
俺はそういうのは twitter にいる Haskell 賢人に任せている
これ面白いよ!って記事をフィルタして共有してくれるから、それ読んで勉強してる
ありがたや ありがたや
reddit はニッチなライブラリの質問とかリリース情報みたいなの多くね?
かったるくていちいち追ってられない
俺はそういうのは twitter にいる Haskell 賢人に任せている
これ面白いよ!って記事をフィルタして共有してくれるから、それ読んで勉強してる
ありがたや ありがたや
153デフォルトの名無しさん
2020/04/02(木) 20:27:07.35ID:te9iYBJx >>151
有益
有益
154デフォルトの名無しさん
2020/04/03(金) 02:49:35.37ID:y19+kh0E155デフォルトの名無しさん
2020/04/03(金) 07:10:48.62ID:SDolupu6 技術書って入門書も含む?
156デフォルトの名無しさん
2020/04/03(金) 07:55:31.68ID:a6cZ/qJ8 一切含まない
157デフォルトの名無しさん
2020/04/03(金) 08:28:58.50ID:m8zbpAqS おいおい
158デフォルトの名無しさん
2020/04/03(金) 09:31:03.42ID:DM1ooV3Z159デフォルトの名無しさん
2020/04/03(金) 16:45:57.10ID:ked6xspS 日本の翻訳文化って外国語を自国語に取り込んじゃうのがすごいとかなんとかって話で、翻訳量自体は別にそれほどでもなかった気がする
160デフォルトの名無しさん
2020/04/03(金) 17:43:30.64ID:VVxcL9Mv オーバーシュートω
ロックダウンωωω
ロックダウンωωω
161デフォルトの名無しさん
2020/04/03(金) 17:47:56.79ID:JepZACIl マジレスすると多分中国語が英語の次だろうな
場合によっちゃ英語より多いかもしれん
中国語の場合は入ってくるだけで出ていかないブラックホールだから実態が掴みにくい
場合によっちゃ英語より多いかもしれん
中国語の場合は入ってくるだけで出ていかないブラックホールだから実態が掴みにくい
162デフォルトの名無しさん
2020/04/03(金) 17:57:20.01ID:VVxcL9Mv twitterでHaskellを薦められたので本気になった
https://www.si-ght.jp/entry/techandme-chiyoda02
https://www.si-ght.jp/entry/techandme-chiyoda02
163デフォルトの名無しさん
2020/04/03(金) 18:00:08.86ID:AMwYpRxM かわいいです
164デフォルトの名無しさん
2020/04/03(金) 18:57:42.55ID:Yw161NPN はーい先生怒らないから犯人は正直に手を挙げなさい
>「プログラミング初心者なんですけど、何からやったらいいですか?
> 最近ようやくJavaScriptが少しだけ読めるようになってきた頃です」。
>
> そうしたら「JavaScriptなんて暗黒で恐ろしい言語はダメだ、純粋関数型言語であるHaskellからやった方がいい」みたいなことを言われました。
https://codezine.jp/article/detail/11885
> 「わからなかったけど、コードを書いて動かす楽しみと快感を覚えたんですよ。
> Haskellをもっと理解したいと相談したら、『圏論の基礎』という本を勧められました。
> でもその本も全然わからなかったんです(笑)」
>「プログラミング初心者なんですけど、何からやったらいいですか?
> 最近ようやくJavaScriptが少しだけ読めるようになってきた頃です」。
>
> そうしたら「JavaScriptなんて暗黒で恐ろしい言語はダメだ、純粋関数型言語であるHaskellからやった方がいい」みたいなことを言われました。
https://codezine.jp/article/detail/11885
> 「わからなかったけど、コードを書いて動かす楽しみと快感を覚えたんですよ。
> Haskellをもっと理解したいと相談したら、『圏論の基礎』という本を勧められました。
> でもその本も全然わからなかったんです(笑)」
165デフォルトの名無しさん
2020/04/03(金) 19:05:03.06ID:AMwYpRxM 犯人オタクキモすぎてわろ
166デフォルトの名無しさん
2020/04/03(金) 20:09:26.90ID:Yw161NPN 初手マックレーンは草 ...ってか鬼畜
もっとこう RealWorldHaskell とかあるでしょ
もっとこう RealWorldHaskell とかあるでしょ
167デフォルトの名無しさん
2020/04/03(金) 20:11:51.67ID:Yw161NPN168デフォルトの名無しさん
2020/04/03(金) 22:34:37.28ID:pfIiNzTY Haskellってかわいいよね
169デフォルトの名無しさん
2020/04/03(金) 23:04:02.16ID:a6cZ/qJ8 口うるさいBBAのイメージ
170デフォルトの名無しさん
2020/04/03(金) 23:36:38.26ID:Wo72KAYJ 学術的に進化してもらって
実用的な部分をメジャー言語が取り込んでくれればおk
実用的な部分をメジャー言語が取り込んでくれればおk
171デフォルトの名無しさん
2020/04/04(土) 00:13:54.60ID:HfszwI8c172デフォルトの名無しさん
2020/04/04(土) 08:53:29.14ID:S6De3LG2 >>167
haskellをチョイスするのが只のミーハーではない。
haskellをチョイスするのが只のミーハーではない。
173デフォルトの名無しさん
2020/04/04(土) 14:52:35.68ID:ym7hUMuJ むしろミーハーでもなんでも構わんのだけど、いち Haskeller が女性ってだけで
容姿を蔑んだり・持ち上げたりする連中がいるなら――もしいるのなら反省してほしい、と思った。
DSL を Freeモナドにするか、Tagless Final にするか、それぞれのメリットはなにか…
Haskeller はそういうことで悩んでいたいのであって、性別とかを理由に余計な荷物を背負わせるべきじゃない。
(ghc も依存している llvm はそういう辛さを避ける為に行動規範を定めているんだけど、いまのところまだ ghc には無いっぽい)
https://llvm.org/docs/CodeOfConduct.html
容姿を蔑んだり・持ち上げたりする連中がいるなら――もしいるのなら反省してほしい、と思った。
DSL を Freeモナドにするか、Tagless Final にするか、それぞれのメリットはなにか…
Haskeller はそういうことで悩んでいたいのであって、性別とかを理由に余計な荷物を背負わせるべきじゃない。
(ghc も依存している llvm はそういう辛さを避ける為に行動規範を定めているんだけど、いまのところまだ ghc には無いっぽい)
https://llvm.org/docs/CodeOfConduct.html
174デフォルトの名無しさん
2020/04/04(土) 14:56:51.64ID:ym7hUMuJ175デフォルトの名無しさん
2020/04/04(土) 15:03:44.40ID:ZRwDcP1M キモすぎて怖い…
176デフォルトの名無しさん
2020/04/04(土) 17:30:47.61ID:V7kxF8pu haskellでやり過ぎなほど徹底的に宣言性にこだわってプログラムする実験をしてみたが、なかなか面白いぞ。
手続き的になりがちなゲームプログラミングでやってみると特に。
手続き的になりがちなゲームプログラミングでやってみると特に。
177デフォルトの名無しさん
2020/04/04(土) 20:17:31.82ID:H4c+c10U 今から出会い系の女と会ってくるがやばいんか?
178デフォルトの名無しさん
2020/04/05(日) 00:47:08.63 Haskellスレってワードサラダbotに荒らされてるのか
179デフォルトの名無しさん
2020/04/05(日) 12:14:43.03ID:P07lI1PF180デフォルトの名無しさん
2020/04/05(日) 12:26:37.15ID:P07lI1PF181デフォルトの名無しさん
2020/04/05(日) 14:11:08.66ID:TA9KtVo9 haskellでアクションって言葉よく出てくるけど定義なに?
182デフォルトの名無しさん
2020/04/05(日) 14:28:05.53ID:k4Q+DqWZ >>181
HaskellでActionという用語をみたことが俺はないけど、Haskell直系の子孫のPureScriptだと
型注釈の->の右辺にEffectがある関数をアクションと定義するそうだ。
EffectはHaskellでいうIOに対応すると思ってもらえたらいい。
ちなみに->の左辺にEffectがある関数をハンドラという。
-- アクション
throwException :: forall a. Error -> Effect a
-- ハンドラ
catchException :: forall a. (Error -> Effect a) -> Effect a -> Effect a
HaskellでActionという用語をみたことが俺はないけど、Haskell直系の子孫のPureScriptだと
型注釈の->の右辺にEffectがある関数をアクションと定義するそうだ。
EffectはHaskellでいうIOに対応すると思ってもらえたらいい。
ちなみに->の左辺にEffectがある関数をハンドラという。
-- アクション
throwException :: forall a. Error -> Effect a
-- ハンドラ
catchException :: forall a. (Error -> Effect a) -> Effect a -> Effect a
183デフォルトの名無しさん
2020/04/05(日) 19:12:11.35ID:690ELyL1 >>176
レポジトリ教えて
レポジトリ教えて
184デフォルトの名無しさん
2020/04/05(日) 20:19:22.93ID:eydcY4ib レポジトリって、サッポロ一番の新しい味?
185デフォルトの名無しさん
2020/04/05(日) 20:26:40.20ID:glUSLxyq そうだよ
186デフォルトの名無しさん
2020/04/05(日) 21:28:22.97ID:BHv6uIvk レポジトレ教えて
187デフォルトの名無しさん
2020/04/06(月) 02:32:17.14 FRPは死滅しちゃったの?
188デフォルトの名無しさん
2020/04/06(月) 03:19:32.28ID:2h0eofxY >>187
どういうこと?
どういうこと?
189デフォルトの名無しさん
2020/04/06(月) 04:59:07.56ID:qqlpdYMz どういうことなの…
190デフォルトの名無しさん
2020/04/06(月) 05:06:41.75ID:kxm5p/Vo むしろ>>188-189がどういうことなのかわからない
191デフォルトの名無しさん
2020/04/06(月) 09:29:24.23ID:H7siEM1Y CabalのドキュメントのSecure repository のところ、
root.jsonのkey idを省略するのはお勧めしないとか書いてるけど、
なにかしないといけないの?
root.jsonのkey idを省略するのはお勧めしないとか書いてるけど、
なにかしないといけないの?
192デフォルトの名無しさん
2020/04/06(月) 22:36:41.14ID:MPGLY2yf このスレにはHaskellerなんかいないということがよくわかるな
193デフォルトの名無しさん
2020/04/07(火) 07:33:13.33ID:UmG0jYGu 本当に言語に詳しい奴ってのはその言語の弱点をしっかりおさえてるもんよ。
194デフォルトの名無しさん
2020/04/07(火) 07:36:16.93ID:SJ9J2Mim ?
195デフォルトの名無しさん
2020/04/08(水) 08:37:32.33 IO がオルタナティヴになったのって最近なのか
Aizu Online Judge のGHCだとコンパイルエラーになる
Aizu Online Judge のGHCだとコンパイルエラーになる
196デフォルトの名無しさん
2020/04/08(水) 22:07:27.52 let [a,b,c,d] = bokunofunction in 〜
このリストってWHNFにならないのな
このリストってWHNFにならないのな
197デフォルトの名無しさん
2020/04/12(日) 14:46:14.07ID:qLx35nn/ 目的は二つ
式を評価し過ぎないこと
副作用を実行し過ぎないこと
手段はただ一つ
最外簡約
式を評価し過ぎないこと
副作用を実行し過ぎないこと
手段はただ一つ
最外簡約
198デフォルトの名無しさん
2020/04/12(日) 18:21:55.43ID:flKXD0mo haskellでコロナ感染シミュ作るやつ誰もおらんのか?
199デフォルトの名無しさん
2020/04/12(日) 19:41:52.11ID:EEQhx4+u codewarの問題をHaskellで解いてみてるんだけど
、12000msタイムアウト多発する
リスト内包表記とか再帰はHaskellerはあんまり使わないの?
nに含まれる素因数とかすぐタイムアウトする
、12000msタイムアウト多発する
リスト内包表記とか再帰はHaskellerはあんまり使わないの?
nに含まれる素因数とかすぐタイムアウトする
200デフォルトの名無しさん
2020/04/12(日) 21:46:48.73ID:ogEgOOCw201デフォルトの名無しさん
2020/04/12(日) 22:42:42.81 Haskell で競プロ辛い・・・
200000個の整数読み込んで処理するような問題だとMLEになりがちだ
本当にそんなに使ってるのかよ・・・疑わしいなぁ
ランタイムがとりあえずあるだけ使おうとして、足りなくなったらもう要らない空間を探して、そこに上書きするようにしてるの?
だとすると、とりあえずあるだけ使おう期間の段階で上限ぶっちぎってるってことかね
もしかして
GHC「記憶域ください」
競プロシステム「あなたは上限なのでもうあげません」
GHC「仕方ないな、じゃあガベージコレクションしてなんとかやりくりしよう」
ではなくて
GHC「記憶域ください」
競プロシステム「どうぞどうぞ」
GHC「どうも」
競プロシステム「はいそれは毒まんじゅうです。今のでMLEです」
GHC「えっ!!!!」
こうなんじゃないか?
ソースコードで「メモリ使用はは150MB以内で巧くやりくりしろ」とかって制限の指示できないんですか?
200000個の整数読み込んで処理するような問題だとMLEになりがちだ
本当にそんなに使ってるのかよ・・・疑わしいなぁ
ランタイムがとりあえずあるだけ使おうとして、足りなくなったらもう要らない空間を探して、そこに上書きするようにしてるの?
だとすると、とりあえずあるだけ使おう期間の段階で上限ぶっちぎってるってことかね
もしかして
GHC「記憶域ください」
競プロシステム「あなたは上限なのでもうあげません」
GHC「仕方ないな、じゃあガベージコレクションしてなんとかやりくりしよう」
ではなくて
GHC「記憶域ください」
競プロシステム「どうぞどうぞ」
GHC「どうも」
競プロシステム「はいそれは毒まんじゅうです。今のでMLEです」
GHC「えっ!!!!」
こうなんじゃないか?
ソースコードで「メモリ使用はは150MB以内で巧くやりくりしろ」とかって制限の指示できないんですか?
202デフォルトの名無しさん
2020/04/12(日) 23:16:24.10ID:DjxEmd7z Haskellで競プロやるテクをまとめた同人誌があったような
203デフォルトの名無しさん
2020/04/12(日) 23:19:22.76ID:BXIcY8lZ 薄い本があったのか…
204デフォルトの名無しさん
2020/04/13(月) 04:15:51.10ID:WjwyibsT mleってなに?
Maximum likelihood estimation しか思いつかん
Maximum likelihood estimation しか思いつかん
205デフォルトの名無しさん
2020/04/13(月) 06:08:11.82ID:Er/sUT94 ぼくもそれしか…
206デフォルトの名無しさん
2020/04/13(月) 06:56:02.05ID:rnoGia+U 競プロ mle でググってみた
MLE
メモリリミットエラー(Memory Limit Error)の略
提出したプログラムが許可された以上のメモリを使用したときに出る
(一部のコンテストで採用されている表現)
MLE
メモリリミットエラー(Memory Limit Error)の略
提出したプログラムが許可された以上のメモリを使用したときに出る
(一部のコンテストで採用されている表現)
207デフォルトの名無しさん
2020/04/13(月) 12:33:53.04ID:tr0y4100 >>201
とりあえずローカルでプロファイル取って実行してみると
スペースリークや大量のGCの原因が推定できるはず
(「Haskell プロファイラ」とかでぐぐって)
未評価のサンクが大量に積み上がっているとか、
イミュータブルな連結リストの使い方が悪くて
大量の一時リストを作ってしまっているとか
あたりじゃないかと想像してみる
とりあえずローカルでプロファイル取って実行してみると
スペースリークや大量のGCの原因が推定できるはず
(「Haskell プロファイラ」とかでぐぐって)
未評価のサンクが大量に積み上がっているとか、
イミュータブルな連結リストの使い方が悪くて
大量の一時リストを作ってしまっているとか
あたりじゃないかと想像してみる
208デフォルトの名無しさん
2020/04/13(月) 13:06:48.82ID:pEw+DEbK タイムアウトのやつ
この問題やってて
ttps://www.codewars.com/kata/54d496788776e49e6b00052f/train/haskell
通らないコードがこれ
sumOfDivided :: [Integer] -> [(Integer, Integer)]
sumOfDivided xs = map (\x -> (x,foldr (+) 0 (filter ((==0).(flip rem x) ) xs)) ) $ prime_factors ( product xs) 2
where
prime_factors 1 _ = []
prime_factors m n
| rem m n == 0 = n : (prime_factors (quot m n) $ n+1)
| otherwise = prime_factors m $ n+1
こういう感じでコード組み立てるんだけど、他の問題でもしょっちゅうタイムアウト起こしてる
応答の速いコードにするにはどんなふうに変えていけばいいかを知りたい
cで言うと値コピーしてソートしないでポインタでソートすると速いみたいな
この問題やってて
ttps://www.codewars.com/kata/54d496788776e49e6b00052f/train/haskell
通らないコードがこれ
sumOfDivided :: [Integer] -> [(Integer, Integer)]
sumOfDivided xs = map (\x -> (x,foldr (+) 0 (filter ((==0).(flip rem x) ) xs)) ) $ prime_factors ( product xs) 2
where
prime_factors 1 _ = []
prime_factors m n
| rem m n == 0 = n : (prime_factors (quot m n) $ n+1)
| otherwise = prime_factors m $ n+1
こういう感じでコード組み立てるんだけど、他の問題でもしょっちゅうタイムアウト起こしてる
応答の速いコードにするにはどんなふうに変えていけばいいかを知りたい
cで言うと値コピーしてソートしないでポインタでソートすると速いみたいな
209デフォルトの名無しさん
2020/04/13(月) 21:38:04.55ID:tr0y4100210デフォルトの名無しさん
2020/04/14(火) 00:39:23.37 できるだけリストを避けて
読み込みもByteString 版 getContents と readInt の組み合わせで高速化
そして困ったときの Data.Sequence 様やで!
C系提出者は軒並み 0.1 s で処理を終えている中、220MB 1.9 s 弱かけてなんとか致命傷でかいくぐった
制限超過してる気がするが、マイナー言語へのアファーマティブアクションかな?
くぅ〜疲れましたw これにて AC です!
読み込みもByteString 版 getContents と readInt の組み合わせで高速化
そして困ったときの Data.Sequence 様やで!
C系提出者は軒並み 0.1 s で処理を終えている中、220MB 1.9 s 弱かけてなんとか致命傷でかいくぐった
制限超過してる気がするが、マイナー言語へのアファーマティブアクションかな?
くぅ〜疲れましたw これにて AC です!
211デフォルトの名無しさん
2020/04/14(火) 01:34:33.76 >>208
prime_factorsだけど
quotRem なら一回で両方得られる
探索は3から+2ずつ探すべき
n が√m を超えてしまったら探索を打ち切るべき
リストの整数全部に出てくる素因数を予めリストアップしたいんだろうけど
そのprime_factorsだと絶対に素因数が存在しない、(2を除く)偶数空間と√mの後の空間をmに達するまで探していてとてもとても無駄
この無駄はmが大きいほど酷いことになるが、見事に君のコードはproductなんてしてmを巨大化させている
例えば、1000000 の素因数は少なくとも1000 以降は存在しないのに1001, 1002, 1003, ... , 999998, 999999, 1000000 まで探すところを想像してみて
一目気づいたのはそんなところかね。先ずはそこを直してから一局といったところか
prime_factorsだけど
quotRem なら一回で両方得られる
探索は3から+2ずつ探すべき
n が√m を超えてしまったら探索を打ち切るべき
リストの整数全部に出てくる素因数を予めリストアップしたいんだろうけど
そのprime_factorsだと絶対に素因数が存在しない、(2を除く)偶数空間と√mの後の空間をmに達するまで探していてとてもとても無駄
この無駄はmが大きいほど酷いことになるが、見事に君のコードはproductなんてしてmを巨大化させている
例えば、1000000 の素因数は少なくとも1000 以降は存在しないのに1001, 1002, 1003, ... , 999998, 999999, 1000000 まで探すところを想像してみて
一目気づいたのはそんなところかね。先ずはそこを直してから一局といったところか
212デフォルトの名無しさん
2020/04/14(火) 01:52:08.41 >>207
まあ最終手段はそうなるんでしょうね
しかし早すぎる段階での最適化はたいてい悪手って言われてるし
その前に、アルゴリズムの選定が間違ってるんではとなって、あれこれ作戦変えて
いつしか通るわけです。すると結局いつまで経ってもプロファイリングを練習する機会が来ないんですよね
まあ最終手段はそうなるんでしょうね
しかし早すぎる段階での最適化はたいてい悪手って言われてるし
その前に、アルゴリズムの選定が間違ってるんではとなって、あれこれ作戦変えて
いつしか通るわけです。すると結局いつまで経ってもプロファイリングを練習する機会が来ないんですよね
213デフォルトの名無しさん
2020/04/14(火) 01:54:06.60 あ、いや、あれこれ作戦変えるヒントを得る為にプロファイリングするのか・・・
やっぱり手を出してみるか
やっぱり手を出してみるか
214デフォルトの名無しさん
2020/04/14(火) 10:48:29.31ID:Ez55nAck 異世界人「アルゴリズムをあれこれ変える」
主人公「言語をあれこれ変えてみよう」
主人公「言語をあれこれ変えてみよう」
215デフォルトの名無しさん
2020/04/14(火) 11:07:53.93ID:aAi/G6aw 時間とメモリ両面のcomplexity考えるのは最適化以前の話
216デフォルトの名無しさん
2020/04/15(水) 17:46:40.69ID:/WUIZ9Nz >>211
39の素因数って3,13よね?
√39が6くらいだから探索区間は√mじゃ不十分かなって
でも確かに偶数はいらないから2:[3,5..]でいいね
全部の素因数のリスト作るのに全部掛け合わせて処理はひどいなと見直して思った
リストは早くするなら使わない方針なのね
Quatremとリスト以外(sequenceが代替?)調べて組み込んでみようかな
39の素因数って3,13よね?
√39が6くらいだから探索区間は√mじゃ不十分かなって
でも確かに偶数はいらないから2:[3,5..]でいいね
全部の素因数のリスト作るのに全部掛け合わせて処理はひどいなと見直して思った
リストは早くするなら使わない方針なのね
Quatremとリスト以外(sequenceが代替?)調べて組み込んでみようかな
217デフォルトの名無しさん
2020/04/15(水) 17:47:28.61ID:/WUIZ9Nz お礼書き忘れたすみません
回答ありがとうございますなんとか通ってもらいます
回答ありがとうございますなんとか通ってもらいます
218デフォルトの名無しさん
2020/04/15(水) 19:54:09.51ID:JKZ0KcR7 >>216
なんの話かよく知らないけど39を素因数分解してるのなら、
約数として3が見つかったら、その時点でもう39が素数じゃないことが判明するから、13を調べる必要ないよ
√39以下の数字調べればオッケー
なんの話かよく知らないけど39を素因数分解してるのなら、
約数として3が見つかったら、その時点でもう39が素数じゃないことが判明するから、13を調べる必要ないよ
√39以下の数字調べればオッケー
219デフォルトの名無しさん
2020/04/15(水) 19:55:22.34ID:JKZ0KcR7 間違えた
「素因数分解してるのなら」じゃなくて「素数判定してるのなら」だった
「素因数分解してるのなら」じゃなくて「素数判定してるのなら」だった
220デフォルトの名無しさん
2020/04/16(木) 01:02:59.81ID:6p+dWGIK >>208
計算速度や使用メモリ量以前に、解が正しくないよ。
試しに sumOfDivided [8] やってみ。
もう少し言うと、prime_factors 関数がおかしい。
関数名に相応しくない計算をしていられる。
まずは、必要な個数の正しい素数列を作ることを考えた方がいいと思うぞ。
計算速度や使用メモリ量以前に、解が正しくないよ。
試しに sumOfDivided [8] やってみ。
もう少し言うと、prime_factors 関数がおかしい。
関数名に相応しくない計算をしていられる。
まずは、必要な個数の正しい素数列を作ることを考えた方がいいと思うぞ。
221デフォルトの名無しさん
2020/04/16(木) 01:13:24.21 >>216
あ、説明で嘘を吐いてしまった。確かに√m以降に素因数は存在しないは偽だった
それでも尚、√で打ち切っていい手筋は揺るがない。
√39より前の3を発見して、39 `quot` 3 (=13) に対して再帰的に同じことをする
ただし割ることを試すのは今割り切れた素数からね(同じ素数で複数回われることもある)。
もう一回3で割ろうとして失敗し、次は√13 を超えるので打ち切って、13 は素数と判定してリストに加える
だから結果として、√m 以降の素因数を取りこぼすことはない
あ、説明で嘘を吐いてしまった。確かに√m以降に素因数は存在しないは偽だった
それでも尚、√で打ち切っていい手筋は揺るがない。
√39より前の3を発見して、39 `quot` 3 (=13) に対して再帰的に同じことをする
ただし割ることを試すのは今割り切れた素数からね(同じ素数で複数回われることもある)。
もう一回3で割ろうとして失敗し、次は√13 を超えるので打ち切って、13 は素数と判定してリストに加える
だから結果として、√m 以降の素因数を取りこぼすことはない
222デフォルトの名無しさん
2020/04/16(木) 09:43:04.65ID:xRrLSzP4 >>221
素数系のアルゴリズムは手続き的にはよく知られたものが色々あるけど
それをHaskellっぽく(宣言的に)定義しろって言われると割と悩む
STMonadとか使えば手続き的な実装はできるけど何かに負けた気分になる
素数系のアルゴリズムは手続き的にはよく知られたものが色々あるけど
それをHaskellっぽく(宣言的に)定義しろって言われると割と悩む
STMonadとか使えば手続き的な実装はできるけど何かに負けた気分になる
223デフォルトの名無しさん
2020/04/16(木) 12:23:07.85ID:DtoAMVDb 速度あげようと思ったら、どうのように計算するかということに介入する必要があるから手続き的になるのはしょうがないのでは
224デフォルトの名無しさん
2020/04/16(木) 14:44:08.63ID:ta7mONc0 魔法を使える主人公がなぜか銃を乱射するというマナー違反
を許せない真面目系脇役の魅力
を許せない真面目系脇役の魅力
225デフォルトの名無しさん
2020/04/17(金) 17:52:04.90 騎士道はCで書くなど、汚い真似をして勝つことを認めていない
226デフォルトの名無しさん
2020/04/17(金) 18:51:48.64ID:Tw57yEwr ごきげんよう、高貴なるhaskellプログラマの皆様方
今日も可憐におプログラミングですことよ
ほほほ
今日も可憐におプログラミングですことよ
ほほほ
227デフォルトの名無しさん
2020/04/17(金) 23:16:02.21ID:kOeZUqy9 haskellマスターすると新型コロナにかからないってよ
228デフォルトの名無しさん
2020/04/18(土) 03:43:48.65ID:ehKqAcW4 コロナ菌に強い言語なん?
229デフォルトの名無しさん
2020/04/18(土) 11:31:33.48ID:v8V9P+IO C言語プログラムなどを実行すると電磁波の影響で身体への副作用が発生するからな
副作用を抑え人間本来の自然な免疫力を高めるのがhaskell
副作用を抑え人間本来の自然な免疫力を高めるのがhaskell
230デフォルトの名無しさん
2020/04/18(土) 12:26:02.03ID:kkncOpcu haskellマスターで彼女ができました!
231デフォルトの名無しさん
2020/04/18(土) 13:41:19.98ID:urv0mT/N >>229
我慢できずにモナドに手を出して感染する事例が後を立たない
モナドは自粛すべきと何度も言われているのに
屁理屈をこねて手を出す者が多すぎる
本当にHaskellに副作用がないのだと詭弁を弄せずごり押しするのならば
絶対にモナドをやるべきではないと言われている
我慢できずにモナドに手を出して感染する事例が後を立たない
モナドは自粛すべきと何度も言われているのに
屁理屈をこねて手を出す者が多すぎる
本当にHaskellに副作用がないのだと詭弁を弄せずごり押しするのならば
絶対にモナドをやるべきではないと言われている
232デフォルトの名無しさん
2020/04/18(土) 19:32:57.82ID:DCiZBX2v モナドを「やる」ってなんだよw
モナドを禁止薬物か何かと勘違いしてるのか?
すべての人間は二分される
すなわち「モナドである」人間と、そうでない人間、だ
俺はモナド
お前はモナドではない
「上」で待ってるで
モナドを禁止薬物か何かと勘違いしてるのか?
すべての人間は二分される
すなわち「モナドである」人間と、そうでない人間、だ
俺はモナド
お前はモナドではない
「上」で待ってるで
233デフォルトの名無しさん
2020/04/18(土) 20:20:58.00ID:aIlZnP1D おれモナド使いだけど、おまえ俺に使われてんのか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★5 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★7 [ぐれ★]
- 山上妹「統一信者から安倍自民への投票を求められた」法廷で証言 [947332727]
- 【速報】高市首相「つい言い過ぎた」 存立危機事態の答弁について [237216734]
- 【速報】中国、水産物輸入停止★2 [989870298]
- 【悲報】高市早苗見てると80年前のジャップ女も戦争煽ったってよく分かるよね🥺 [616817505]
- 【ネトウヨ朗報】イギリスのトラス元首相、高市有事で高市早苗の支持を表明 [603416639]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
