(Hask)
f
Maybe Int ---> Int
| |
fmap a | | a
v g v
Maybe Bool --> Bool
| |
fmap b | | b
v h v
Maybe Char --> Char
簡単のため、ある対象xへの*x
は、組(Maybe x, x, w :: Maybe x -> x)
を表すことにする。
縦の射への*y
も(fmap y, y)
とする。
(一般的な記号じゃないよ! 今だけの記法!🐕)
例: *Int
= (Maybe Int, Int, f)
(Maybe-Algebra)
*Int
|
| *a
v
*Bool
|
| *b
v
*Char
Fixはこんな感じ!
(Maybe-Algebra)
*Int <--\
| \ cata f
| *a \
v \
*Bool <------- *(Fix Maybe)
| /
| *b /
v / cata h
*Char <--/