haskell-jp / atcoder-lang-updates #1

@ has joined the channel
@ set the channel purpose: AtCoder の言語アップデートについて議論・意見交換を目的とする
@igrep has joined the channel
@mod_poppo has joined the channel
@kakkun61 has joined the channel
リポジトリも作成しました。とりあえず gist にまとめておいた内容を Readme としておきました。
https://github.com/haskell-jp/atcoder-haskell-resources
slack の招待用URLってどこかで確認できましたっけ?
@lotz has joined the channel
決めていきたいこと (今やっていること)

1. 環境の構築方法
2. インストールするライブラリ

1. 環境の構築方法については igrep さんの提案通り、僕も ghcup が良いと思うので Ubuntu 18.04 でのインストール手順をまとめています。

https://gitlab.haskell.org/haskell/ghcup でインストールしちゃいましょう。
curl https://gitlab.haskell.org/haskell/ghcup/raw/master/bootstrap-haskell -sSf | sh でサクッとイケるのかな?
https://haskell-jp.slack.com/archives/C4M4TT8JJ/p1561978077089900?thread_ts=1561974350.082400&cid=C4M4TT8JJ


2. ライブラリの選定については、<@UGM9F7XQS> さんなど、実際に AtCoder に参加してる人の意見をまとめていきたいです。

これまでに名前があがったライブラリの一覧
https://haskell-jp.slack.com/archives/C4M4TT8JJ/p1561978077089900?thread_ts=1561974350.082400&cid=C4M4TT8JJ
ありがとうございます!
スプレッドシートに貼っておきます。
@ https://github.com/haskell-jp/slack-log/pull/16/files を参考にこのチャンネルをslack-logで記録するよう設定お願いします!
チャンネルのIDはここのURLの

です。
@ has joined the channel
PR 出しましたので確認よろしくお願いします。
https://github.com/haskell-jp/slack-log/pull/17
@nobsun has joined the channel
@notogawa has joined the channel
@fumieval has joined the channel
@maton has joined the channel
@cojna has joined the channel
@gksato has joined the channel
こんにちは。haskellでatcoderをやっているので、参考になればと思って参加させていただきました。今は使ってないですけど、あったらいいなって思うのはattoparsecとかparsecとかですかね。
Stackっ子で、Cabal Hellにぶち当たったことがない人間の素朴な疑問なのですが、「Haskell-Platform packages + α」っていう意見がライブラリの方であったと思うんですけど、ghcupを使うとしたら、Haskell-PlatformにもStackにも頼らないことになりそうで、Version consistencyは大丈夫かなという不安があるんですが、どうなんでしょう。
依存関係の問題は、大抵の場合インストールの時点でわかるはずです。そしてそれはstackでも本質的には変わりません。
ちなみに 古い cabalで一番厄介だったのは、同じバージョンの同じパッケージは同じパッケージデータベースに一つだけ、という制限があったことによるものでして、一度に必要なパッケージをまとめて入れている限りは問題にならないはずです。
詳しくは英語ですが http://www.well-typed.com/blog/2015/01/how-we-might-abolish-cabal-hell-part-2/ を。
唯一テストが失敗する(ようなバグった)組み合わせのバージョンが混ざってしまう、というリスクはStackageを使わないと防げませんが、それが不安ならcabalからStackageを使うこともできますし。
なるほど、それは古い問題なんですね! リンクは今から確認してみますが、とりあえず安心しました! ご丁寧にありがとうございます。
@Synm has joined the channel
@as_capabl has joined the channel
Pythonだとnumpyが高速化のカギらしいので、HaskellとしてはRepaやAccelerateが入っていると良いのだろうか(使ってる人を見たことがないですけど)
AccelerateはCPUで動かす限りは不要で、repaで良いみたいです
それも含めて、特に制限がないならどんどん入れちゃえば?ぐらいに外野の人間として思ってたんですけど、競技プログラミングとして面白くするにはそうでもないんすかね。 :thinking_face:
@ has joined the channel
RepaはHaskell Platform packageではないので、普通の競プロサイトで使ってる人はいないかなって思います。
これを機会に入れてみたら面白いかなとも思います。Vector系で2次元配列をまともに扱うのが地味にめんどくさいので。(Java的に、Data.Vector.Vector-of-Data.Vector.Unboxed.Mutable.MVectorってやればいいんでしょうが、実用上Data.Vector.replicateMが遅いので、手で2次元用の配列インデックスを1次元に置き換える羽目になります。割とつらいんですよね。)
ごめんなさい、忘れてください。Mutableの機能はRepaにはないな。
Data.Ix + Data.Vector.Unboxed.Mutable.MVector で我慢するしかないんですかねー…。
よく考えれば、Data.Vector.Unboxed.MutableのData.Array.MArray実装を書けば良いだけだったので、Repaやっぱ要ります、とか言おうとしながらちょっと検索してたんですけど、どなたかmassivパッケージって使ったことある方いらっしゃいます…?
今割と興味が出てきているんですけれど
データ並列で高速化しようというのは SRM タイプの競プロだと少ない気がします[要出典]
(並列化にはあんま興味がなくて高次元VectorのNotationを簡単にしたいだけとは言えない…)
ってか大半の方は並列化が目的なんだろうし(ただの推測)
@ has joined the channel
ghcup を使った環境構築方法についてまとめました。
https://github.com/haskell-jp/atcoder-haskell-resources/blob/master/spec.md

気になる点などあったら教えてください:ok_hand:
追加パッケージについても、まとめていきたいですね。
今までは Haskell Platform に付属しているパッケージは全て利用できたので、次のアップデートでも一応入れておいた方が良いんですかねー?

とりあえず、現状のパッケージ案 (会話の中で出てきたもの) は以下の通りです。

- array
- attoparsec
- bytestring
- containers
- extra
- fgl
- hashmap
- heaps
- lens
- mwc-random
- parsec
- psqueues
- repa
- unboxing-vector
- unordered-containers
- utility-ht
- vector
- vector-algorithms
text, primitive, reflectionあたりも欲しいです
スプレッドシート編集の期限って出てましたっけ?まだ告知されていない?
まだ告知されていないと思います。
このツイートを見る限りだと、アップデート自体は8月あたりに実施されそうな雰囲気ですね。
https://twitter.com/chokudai/status/1140833567376674816
提案の Accept / Reject について chokudai さんの見解 (一連のツイート)
追加パッケージ選定の基準として参考になりそうです。

https://twitter.com/chokudai/status/1138677406984691712
https://twitter.com/chokudai/status/1138677959059943424
https://twitter.com/chokudai/status/1138678908088344577
https://twitter.com/chokudai/status/1138679237957677056
提案されたパッケージリストが、現状の AtCoder 環境に含まれるかどうかチェックしました。
https://github.com/haskell-jp/atcoder-haskell-resources#%E8%BF%BD%E5%8A%A0%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

Haskell-Platform に含まれていたものについては特に議論の必要は無さそうですが、
新たに追加するパッケージについては、何かしらの理由が欲しいところですね。