Contents
猫番
0日目
Cats 入門
多相性って何?
パラメータ多相 (parametric polymorphism)
派生型による多態 (subtype polymorphism)
アドホック多相
sum 関数
Monoid
FoldLeft
Cats の型クラス
メソッド注入 (enrich my library)
標準データ型に対する演算子構文
1 日目
型クラス初級講座
sbt
Eq
Order
PartialOrder
Show
Read
Enum
Numeric
型クラス中級講座
信号の型クラス
2日目
simulacrum を用いた独自型クラスの定義
Yes と No の型クラス
Functor
ファンクターとしての Either
ファンクターとしての関数
関数の持ち上げ
Discipline を用いた法則のチェック
REPL からの法則のチェック
Discipline + MUnit を用いた法則のチェック
import ガイド
implicit のまとめ
import cats._
暗黙のスコープ
import cats.data._
import cats.implicits._
cats.instances.AllInstances
cats.syntax.AllSyntax
アラカルト形式
型クラスインスタンス
Cats 型クラスの syntax
Cats データ型の syntax
標準データ型の syntax
全ての syntax
3日目
型を司るもの、カインド
forms-a vs is-a
Semigroupal
Cartesian 則
Apply
Applicative Style
Apply としての List
*> と <* 演算子
Option syntax
Apply としての Option
Apply の便利な関数
Apply則
Applicative
Applicative の便利な関数
Applicative則
4日目
Semigroup
Semigroup 型クラス
Semigroup則
Semigroups としての List
積と和
Monoid
Monoid 型クラス
Monoid則
値クラス
Disjunction と Conjunction
Monoid としての Option
法則に関して
モノイドを使ったデータ構造の畳み込み
5日目
Apply.ap
Serializable な型クラスインスタンス
FlatMap
Option から始める
FlatMap則
Monad
綱渡り
ロープの上のバナナ
for 内包表記
帰ってきたピエール
パターンマッチングと失敗
Monad則
List データ型
FunctorFilter
騎士の旅
6日目
do vs for
actM を実装する
Writer データ型
Writer
WriterT
Writer に for 構文を使う
プログラムにログを追加する
非効率な List の構築
性能の比較
Reader データ型
DI: Dependency injection
7日目
State データ型
State と StateT データ型
状態の取得と設定
状態の抽出と変更
Validated データ型
NonEmptyList を用いた失敗値の蓄積
Ior データ型
8日目
自由モノイド
単射
一意性
自由対象
自由モナド (Free)
自由モナドの重要性
CharToy
Fix
FixE
Free データ型
Stackless Scala with Free Monads
トランポリン
自由モナド
Free を用いた自由モノイド
末尾再帰モナド (FlatMap)
スタック問題とは
FlatMap (MonadRec)
9日目
便利なモナディック関数特集
flatten メソッド
filterM メソッド
foldM 関数
安全な RPN 電卓を作ろう
モナディック関数の合成
lift メソッド
モナドを作る
モナドはフラクタルだ
List は ++ に関してモナドを形成する
じゃあ、Option は何に関するモナド?
フラクタルとしての State
フラクタルを探しだす
10日目
モナド変換子
Dependency injection 再び
ReaderT としての Kleisli
Future と Either の積み上げ
EitherT データ型
11日目
ジェネリシティ
値によるジェネリシティ
型によるジェネリシティ
関数によるジェネリシティ
構造によるジェネリシティ
性質によるジェネリシティ
ステージによるジェネリシティ
形によるジェネリシティ
Bifunctor を用いたデータ型ジェネリック・プログラミング
Bifunctor
Bifunctor からの map の導出
Bifunctor からの fold の導出
Bifunctor からの unfold の導出
Tree
オリガミ・パターン
Const データ型
Const データ型を用いた monoidal applicative functors
アプリカティブ・ファンクターの組み合わせ
ファンクターの積
Apply ファンクターの積
アプリカティブ・ファンクターの積
Applicative の合成
アプリカティブ関数の積
アプリカティブ関数の合成
12日目
Traverse
sequence 関数
TraverseFilter
filterA
部分的ユニフィケーションを用いた型推論の強制
形とコンテンツ
Applicative wordcount
アプリカティブなモジュラー反復
13日目
Id データ型
Functor としての Id
Apply としての Id
FlatMap としての Id
Id ってなんで嬉しいの?
Eval データ型
Eval.later
Eval.now
Eval.always
スタックセーフな遅延演算
抽象的な Future
Future を使った UserRepos
Id を使った UserRepos
抽象におけるコード
EitherT を用いた UserRepos
14 日目
SemigroupK
SemigroupK としての Option
SemigroupK 則
MonoidK
MonoidK 則
Alternative
Alternative 則
オオカミ、ヤギ、キャベツ
makeNMoves0
isSolution
makeMove
15日目
圏論の初歩
集合、射、射の合成
点
Arrow
Category
Compose
Strong
Split
同型射
射の等価性
同型射のテスト
16日目
Awodey の『Category Theory』
Milewski の 『Category Theory for Programmers』
Sets
Sets
Pos
有限圏
Cat
圏としてのモノイド
Mon
Grp
忘却函手
17 日目
始対象と終対象
同型を除いて一意
始対象の例
終対象の例
積
積の一意性
双対性
逆圏
双対性原理
余積
代数的データ型
余積としての Either データ型
Curry-Howard エンコーディング
Shapeless.Coproduct
EitherK データ型
18日目
エフェクトシステム
Cats Effect sbt セットアップ
IO データ型
Hello world
Pizza app
ApplicativeError
ApplicativeError としての Either
ApplicativeError としての scala.util.Try
ApplicativeError としての IO
MonadCancel
MonadCancel としての IO
F.uncancelable
bracket
19 日目
FunctionK
Higher-Rank Polymorphism in Scala
MonadCancel での FunctionK
Resource データ型
モナドとしての Resource
Resource のキャンセル対応
モナドトランスフォーマーとしての Ref
モナドトランスフォーマーとしての Resource
Contents in Depth
Combined Pages
猫番
— Contents in Depth