表記法
本資料では対象と型、射と関数が混在します。基本的には以下の表記法に基づいて書いていますが、説明の都合上はこの限りではありません。なお、確認漏れの場合もあります。
圏
圏は太字大文字のアルファベットで表記します。
例) A, B, Func(A, B)
対象
対象は小文字のアルファベットで表記します。
a, b, c
射
射は対象間の矢印として、キャメルケースで表記します。
f: a -> b, strLength: b -> c
射の合成は . で表記します。
g . f
関手
関手は圏の間の矢印として、大文字のアルファベットで表記します。
F: A -> B
関手による射の変換は、カッコをつけて表記します。
F(a) = F(b), F(f): F(a) -> F(b)
自然変換
自然変換は ~>
で表記します。
α: F ~> G
Scala
Scala の型や関数、変数等はコードスニペットで表記します。
型
A, B, C, Int, String, List[A]
関数
def f: A => B
val g: B => C
def h(a: A): B
関数の合成は compose
を使うことが多いです。
g compose f
数学
数式についてもスニペットで表記しますが、シンタックスハイライトはありません。
集合
{ a, b, c, d, e }
A = { 1, 2, 3, 4 }
関数
y = f(x)