haskell-jp / atcoder-lang-updates #7 at 2023-04-07 12:25:44 +0900

transitive dependencies に入ってて,ちょっと便利そうなので,追加提案:
indexed-traversable
indexed-traversable-instances
あと, lens 系が入っているので,
strict-containers-lens (`strict-containers` を入れるなら)
を追加提案しておきます.
indexed-traversableはControl.Lens.Indexedで代用できるかなと。
入れるならekmett氏の圏論がらみの諸々もいれたいですね
contravariant, kan-extensions, adjunctions あたりであってますか?
あとはこれかな
bifunctors, comonad, ditributive, profunctors, semigroupoids
正直欲望に従うなら入れたいやつばっかりですね……
もしかして圏論系って全部 transitive dependency に入ってます? なら言い訳も立ちますしどんどん入れちゃいましょう!
transitive dependency の direct dependency への 格上げの追加提案:
contravariant
kan-extensions
adjunctions
bifunctors
comonad
distributive
profunctors
semigroupoids
圏論系,入れたすぎてついつい前のめりに「入れるぞ!!!」と叫んでしまいましたが,正当化の理由を用意した方がいい気がしたので記しておきます.

「パッケージAがパッケージBの中身を全てre-exportしている」というのはパッケージBを排除する理由にはならないと思っています.
基本的には,
1. 競プロの意味でアルゴリズムを書く際に,それを「Haskell的に普通のプログラミング」の範囲で自然に書くために必要であること
2. 競プロを極端に簡単にするようなアルゴリズムを導入しないこと
がパッケージ導入のための条件であると思っています.ただ,すでにtransitive dependency に入っているものに関しては割と1.に関してゆるく判定してもいいと思っていて,それは追加によってジャッジにさらなる負荷をかけないことが明らかであるからです.

私がこの会話を始めた時点で indexed-traversable を提案したのは, list に imap があると普通に便利っぽそうで,それを通常の範囲でやるなら lens ではなくて indexed-traversable をdependencyに入れるよな,位での提案でした.圏論系は新たなアルゴリズムの導入は行わないし,専らプログラミングスタイルの簡潔化のために役立つものだと思っているので,「使いたい」という人がいる時点で,1. の条件を満たすとみなしても良いだろう,と判断した,ということにします! (ごめんなさい,本当は使い方も思いついてないまま入れたかっただけです…)
圏論系ライブラリの使用例として表現可能関手を使ったメモ化の記事をおいておきます
https://iagoleal.com/posts/representable-memoize/