3月
8
"Typeclassopedia+α" オンラインもくもく会#20
`Distributive` と `mono-traversable`
イベントの説明
概要
主に "Typeclassopedia" に掲載されている型クラスを理解するためのもくもく会です.
毎回指定した型クラスに関する "Typeclassopedia" の内容や,型クラスに関する記事を読んだり,モジュール等で定義されている関数を確認したりソースコードを読んだりすることを各自で行います.
日時
- 毎週金曜日 22:00 ~ 23:30
- 題材によっては,早めに終えることがあります
進め方
-
題材
- 毎回,対象とする型クラスを指定します
- 必ずしも "Typeclassopedia" の列挙順で指定しません
- "Typeclassopedia" に掲載されていない型クラスを扱うことがあります
- 分量が多ければ,複数回に分けたり次回に回したりすることがあります
-
もくもく会
- 連絡事項があれば,Discord にてテキストチャットで伝えます
- 先に勉強会を終えたり時間に遅れたりしても,お構いなく.ご自分の都合を優先してください.
- 対象の型クラスを時間中に終えられず次回までに終えることが困難であれば,次回の型クラスを決定する前に管理者に伝えてください.次回の題材を調整します.
- 時間が限られているとはいえ,各回で取り上げている内容の理解をできるだけ重視してください
題材予定の型クラス
-
[済]
Semigroup
,Monoid
-
[済]
Functor
,Bifunctor
-
[済]
Contravariant
,Profunctor
-
[済]
Apply
,Applicative
,Biapply
,Biapplicative
,Divisible
-
[済]
Bind
, 基本的なMonad
-
[済]
MonadFail
,MonadFix
, ほかMonad
関連 -
[済] "Monad Transformer", "Extensible Effect"
-
[済]
Comonad
,ComonadApply
-
[済]
Alt
,Plus
,Alternative
-
[済]
MonadPlus
,Decidable
-
[済] Parser combinators 関連ライブラリ (パッケージ)
-
[済]
Foldable
,Foldable1
-
[済]
Bifoldable
,Bifoldable1
,fold
関連ライブラリ (パッケージ) -
Traversable
関連? -
Semigroupoid
,Category
-
Arrow
関連
(備考) 一部型クラス名を変更する議論: semigroupoids issue#26
想定する参加者
-
型クラスの関係を確認したい方
-
ある型クラスで,どのようなメソッドが定義されているのかを確認したい方
-
ある型クラスのメソッドが,どのように実装されているのかを確認したい方
第20回の内容
題材例
-
Distributive
-
distributive
:Data.Distributive
Distributive functors -- Dual to Traversable
-
"Is there such thing as a bidistributive? What function do I need here?"(stackoverflow, 2017-12-22)
-
-
mono-traversable
(興味がある場合)Type classes for mapping, folding, and traversing monomorphic containers
-
classy-prelude
との関係A typeclass-based Prelude
-
mono-traversable
から部分関数を取り除いたものを用いてる custom-prelude -
経緯説明: "Announce: mono-traversable and classy-prelude 0.6"(Yesod, 2013-09-27)
-
-
rio
との関係A standard library for Haskell
-
使用しないという方針: issue#4: "Data structure typeclasses or not?"
-
現在
mutable-containers
から一部を抽出する途中: issue#151 "Include some mutable containers"
-
-
"poly-traversable"(effectfully, 2018-03-30)
-
-
22:30 まで暇な場合 (前回と同様)
-
bifunctor
のData.Biapplicative
に存在するtraverseBia
,sequenceBia
と、base
のData.Bitraversable
の関数とを比較する -
(あまり慣れ親しんでいない?)
Bi*
関連を再度確認する型クラス パッケージ モジュール Bifunctor
base
Data.Bifunctor
Biapply
semigroupoids
Data.Bifunctor.Apply
Biapplicative
bifunctor
Data.Biapplicative
Bifoldable
base
Data.Bifoldable
-
containers
やunordered-containers
の各種Data.*
で定義されている関数と、どの型クラスのインスタンスであるのかを確認するコンテナ パッケージ モジュール IntMap
containers
Data.IntMap.Strict
IntSet
containers
Data.IntSet
Map
containers
Data.Map.Strict
Sequence
containers
Data.Sequence
Set
containers
Data.Set
HashMap
unordered-containers
Data.HashMap.Strict
HashSet
unordered-containers
Data.HashSet
-
タイムスケジュール
今回も量が少ないので,早めに終える可能性があります ( 早く終わった方は,ご自分の判断で勉強会を終えてください )。
それに関連して,次回の案内は 22:30 過ぎ に公開することにします 。
時刻 | 内容 |
---|---|
22:00 ~ 23:30 | もくもく会 |
22:30 過ぎ | 次回の案内 |
備考
- Typeclassopedia の内容は不定期更新されているため,毎回最新版のものを利用します
資料 資料をもっと見る/編集する
資料が投稿されると、最新の3件が表示されます。