haskell-jp / random #43

@yuukis123 has joined the channel
本日の github-trends より。Haskell製 3D FPSゲーム
https://github.com/rainbyte/frag
:wine_glass: 【速報】 winery 1.0解禁のお知らせ http://fumieval.hatenablog.com/entry/2019/03/21/172101
Haskellに関する日本語の情報を集積する非公式のScrapboxプロジェクト、haskell-shoen(Haskell荘園)を作りました。手始めにライブラリやデータ構造などの比較をいくつか書きましたが、Haskellに関する内容なら自由に書いて大丈夫です 
@y-shishikura has joined the channel
今日、パッチが適用されました。 ログインしないでもpage historyを表示できるようになっています。 また、ログインすると、editできるようになっているはずです:slightly_smiling_face:
まだ7人しか来てないですよ!執筆の自信がなくても自己紹介とかだけでいいのでどんどん書き込んでください!
WAIアプリをAWS Lambdaで動かす。現代Haskellらしいアプローチだと思う。
https://github.com/deckgo/wai-lambda
AtCoderのGHCどうやって入れてるのか不明ですが、 Data.Vector は入ってるっぽいんですよね(コンパイル通った)
Haskell荘園、現在18項目あります。今日のピックアップは「状態管理」 https://scrapbox.io/haskell-shoen/%E7%8A%B6%E6%85%8B%E7%AE%A1%E7%90%86
AtCoder の人が個別のライブラリまで入れてくれているとは思えないし、 Haskell Platform でしょうかね https://www.haskell.org/platform/contents.html
https://scrapbox.io/haskell-shoen/Applicative 任意のTraversableをソートする方法、気になりませんか?
@gemmaro has joined the channel
https://scrapbox.io/haskell-shoen/Monoid 参加してみたくて、とりあえずモノイドの記事を書いてみました。
RWSってなんて呼ぶんでしょうね。自分は心の中で「るーす」と呼んでますが(そもそも口に出す機会がない)
そのままアールダブリュエス(そもそもあまり使わない
条件によって評価されたりされなかったりする変数をifとかの外に置いても気にしなくていいのは遅延評価の典型的なメリットですよな。ガードについたwhereは確かに意識から漏れそう。
https://qiita.com/pxfnc/items/a26bda6d11402daba675
RWS Monad, どんなときに使うのがいいんすかね。普通にReaderT, WriterT, StateTを重ねるだけでも今のGHCならいい感じに最適化してくれるという認識でしたが...
アールダブリュエス派です。普通に変換子をスタックするよりは2割くらい速くなります(しかしWriter部分が遅いので結局うちではRWSIOを直接定義していますが…)
http://hackage.haskell.org/package/transformers-0.5.6.2/docs/Control-Monad-Trans-RWS-CPS.html ができた今なら自前で定義する必要はないかも知れませんね! :bulb:
haskellのruntimeじゃなくてnode.jsの上で動いてますね。
一度haskellのruntimeをみてみましたが、単にprocessを起動しているだけで実質node.jsの上で動かすのと大差ないですからね。(ちゃんと動くか不安しかなく、あまりメリットを感じなかったです。)
transformersのRWS.CPSはモナドの中のタプルがCPSになってないんですね…
(RankNTypesくらいは入れてしまってもよいのでは、と思わなくもない)
Writerで累積させる仕組みを関数にするというだけで、一般的な意味でのCPSモナドとは作りが違うようで…
CPSしたいときはふみさん作のmtl-cを使おう!
Haskellのパッケージの性質を表すアイコンの作成を試みているんですが、抽象的なので難しい(一応左から制御構造、データ、IO、エンコーディング、テスト、パーサのつもり)
@たき has joined the channel
パッケージのティアリスト(対戦型ゲームなどで強いとされる、よく使われているもののランキング)を作りました 
カタカナでハスケルって見るといつもちょっとびっくりしません?:smirk:
non-Haskeller向けの文脈に出てきたな、って感じがしまして。
https://coinpiace.com/cardano/news/iohk-haskell-course-graduation/?amp=1&__twitter_impression=true
@hygxsh2k has joined the channel
そのコース、最後の2週間はフィリップ・ワドラー氏が携わったスマートコントラクト言語を本人から直々に教えてもらったそうです。羨ましい。
https://wadler.blogspot.com/2019/03/two-weeks-of-teaching-in-ethiopia.html
rio全盛なので、ベースモナドはRIOにしたいからResourceTを噛みたくない、っていう理由があるのかな、と思った(rio使うプロジェクト作ってないからわからないけど) https://twitter.com/myuon_myon/status/1110214453897752576
Considered harmful系エントリ書かれてた https://www.fpcomplete.com/blog/2018/10/resourcet-necessary-evil
RIOをResourceT相当にできるインスタンスが便利です http://hackage.haskell.org/package/rio-orphans-0.1.1.0/docs/RIO-Orphans.html#t:HasResourceMap
「bracketで済む所はbracket使えよ」っていうのが上のFPCompleteの記事の要旨ですが、RIOのReaderのデータにHandle入れたい、みたいな状況では凄く役に立ちそうです
rio-orphans
https://hackage.haskell.org/package/http-conduit-1.2.6/docs/Network-HTTP-Conduit.html
ここのwithManagerがResourceT付でしたが、

上記の認識が広がり(ResourceTやめる)
https://hackage.haskell.org/package/http-conduit-2.3.6.1/docs/Network-HTTP-Conduit.html
なくなったのはいいのですが、
gcで回収という話になり、
いつ解放されるか不安です。

なにかご存じであればよろしくお願いします。
問題になるとしたら Manager が保持しているコネクションプールですが、いい感じにやってくれてる、と信じるほかないのではないかと。
ありがとうございます
https://scrapbox.io/haskell-shoen/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%83%86%E3%82%A3%E3%82%A2%E3%83%AA%E3%82%B9%E3%83%88 こうして見ると、Hackageには星の数ほどパッケージはあれど、必修レベルのものは意外と少ないですね
glやOpenGLよりglossの方が採用件数は多そうだと思いました
そもそも抽象度が違うパッケージですが、glossはOpenGL/GLUTを使っていますね
間接依存を「よく使うライブラリ」に含むかどうか、はちょっと主観が入りそうですね。vectorなんかは直接にも間接にも非常によく使うので、文句なくよく使うライブラリに入ると思います
glossはグラフィック入門としては非凡なライブラリですけど、凝った事をやろうとすると卒業して低レイヤーに行きたくなる感じなので、評価が難しいですね
やってる事の詳細については分からないのですが、withManagerと同じ事をしたい場合は

bracket (newManager xxx) closeManager $ \manager -> do
  ...


でいいと思います
async便利だと思うんですけど、世間的には使われてるんですかね。あとsafe-exceptionsとか
あーgc任せってそういう事なんですね
あと、profunctorsは入れるべき
@ has joined the channel
GSoCの申し込みが始まりました。今年は Haskell.org も参加しているのでやる気のある学生さんは是非。
https://discourse.haskell.org/t/gsoc-2019-student-applications-now-open/498
参考: https://summer.haskell.org/news/2019-02-26-accepted-for-gsoc.html