haskell-jp / today-i-learned #1

@lotz has joined the channel
@lotz set the channel purpose: 今日勉強したことを共有するチャネル
@ has joined the channel
@nakaji-dayo has joined the channel
今日は
HVectモジュールのソースコードを見ました。
https://hackage.haskell.org/package/hvect-0.4.0.0/docs/src/Data-HVect.html

SpockでHVectElimやHasRepなるものが所々、型注釈で使われているようですが、これの意味が分からなかったので。

Spockでこれを使っている理由がいまだに分かっていない。とりあえずHVectElimはType Families拡張を使用している?ルーティングにマッチしたら、該当の要素を消して、高速化みたいな処理をしてる??よく分からない。謎です。

HasRepも今のところ謎の存在。
よく調べずの発言ですが確かルーティングのところで、ルールから対応する数の引数を持つ関数を作るところでHVect を使ってた記憶があります :eyes:
@aiya000 has joined the channel
@lotz
ありがとうございます!
正直、ここ全然分かっておらず、後日questionチャンネルで質問投げるかもです:sweat_smile:
@ttsurutani has joined the channel
@igrep has joined the channel
@as_capabl has joined the channel
@ has joined the channel
@kakkun61 has joined the channel
@ has joined the channel
Haskell 化された ghcup の実装をチラ見したんですが、型レベルリストを使った検査例外を使ってるんですね
template Haskell の quasi quote も多用してて URL などはコンパイル時検査してるみたい
https://gitlab.haskell.org/haskell/ghcup-hs
installGHCBin :: ( MonadFail m
                 , MonadMask m
                 , MonadCatch m
                 , MonadReader Settings m
                 , MonadLogger m
                 , MonadResource m
                 , MonadIO m
                 )
              => GHCupDownloads
              -> Version
              -> Maybe PlatformRequest -- ^ if Nothing, looks up current host platform
              -> Excepts
                   '[ AlreadyInstalled
                    , BuildFailed
                    , DigestError
                    , DistroNotFound
                    , DownloadFailed
                    , NoCompatibleArch
                    , NoCompatiblePlatform
                    , NoDownload
                    , NotInstalled
                    , UnknownArchive
                    ]
                   m
                   ()
@ has joined the channel
ghcupURL :: URI
ghcupURL = [uri||]
スマホじゃ等幅にならないっぽいのでパソコンでいじる
@ny has joined the channel
@ has joined the channel
@matsubara0507 has joined the channel
@ has joined the channel
@ has joined the channel
exception-checkedかとおもったらちがった
@addokoda has joined the channel
@nobsun has joined the channel
@clockvoid has joined the channel
@fumieval has joined the channel
@firn has joined the channel
@Dora has joined the channel
@ has joined the channel
@にしたに has joined the channel
@takoeight0821 has joined the channel
@takenobu.hs has joined the channel
今日は
ASTs With Fix And Free
を読んでFixとFreeによるASTの実装の違いを眺めました :eyes:
今日は
YesodのBasicsのチャプターを眺めました。
https://www.yesodweb.com/book/basics
学習コストが高いと言われているが、規約通りに組めば、初心者でもそれなりに動くものが簡単に作れる仕組みは、やはりすごいと感心しました。
今日はTypeFamilies拡張について、以下の記事を読みました。
まだ、最初の方しか読んでない。時間かかりそう。

https://wiki.haskell.org/GHC/Type_families

@na4zagin3 has joined the channel
reanimate を触ろうとTutorialを試してましたが、なぜかブラウザでの描画もGIF生成もうまく行かず諦めました :sweat_smile:
https://williamyaoh.com/posts/2020-05-31-reanimate-nqueens-tutorial.html
手前味噌で恐縮ですが、それなりに分かりやすい解説だと自負しているにもかかわらず、TypeFamilies自体が主題でないネタ記事であるせいか、検索にほぼヒットしないものがあるので宣伝させてください :pray:
https://qiita.com/igrep/items/5496fa405fae00b5a737#typefamilies
@takenobu.hs さんのすごいRTSの資料をみて
GHCのコードリーディング中です。
https://takenobu-hs.github.io/downloads/haskell_ghc_illustrated.pdf
@igrep
まだ全部読めてないですが、とてもわかりやすいですね!
また、じっくり読みます!
rtsがマルチインスタンスで動くようなことが書かれてますね
今日は<@U4LGTMTMK>さんの書いた記事

https://qiita.com/igrep/items/5496fa405fae00b5a737#typefamilies

のTypeFamiliesのところを読みました!
ここに書いてあることを知っているだけでも、公式資料を読み解く下地になりそうです:smile:
他のGHC拡張についても書かれているようなので、時間あるときに目を通しておきます:smile:
@gksato has joined the channel
@ has joined the channel
昨日諦めたreanimateですがに載ってた
$ git clone 
$ cd reanimate/
$ stack build
$ stack ./examples/doc_drawCircle.hs

を試したら動いたので REANIMATE: A TUTORIAL ON MAKING PROGRAMMATIC ANIMATIONS を試しながら読みました
次アニメーションを作りたくなったら reanimate 使ってみようと思います(mp4とかgifにも吐き出せるっぽいので便利そう)