Монады = Функторы + Идемпотентность (типа)? - PullRequest
0 голосов
/ 26 октября 2018

В Хаскеле монады определяются тройкой Клейсли.

В теории категорий вообще можно сказать:

Монады = Функторы + Идемпотентность монадического типа (не значение)?

1 Ответ

0 голосов
/ 26 октября 2018

Нет, монада категорически не идемпотентна: хотя существует требование, чтобы было естественное преобразование

mu_x : T(T(x)) -> T(x)

, в общем случае не случай, когда два выбранных объектатаким образом, равны, то есть,

T(T(x)) = T(x)

обычно не выполняется, даже с точностью до изоморфизма.

Даже в запретной стране Хаскелла Monad это легко увидетьв действии: Maybe (Maybe ()) и Maybe () - явно неравные типы с различным количеством семантических объектов;игнорируя днища:

Nothing, Just () -- Maybe ()
Nothing, Just Nothing, Just (Just ()) -- Maybe (Maybe ())

или с основаниями:

_|_, Nothing, Just _|_, Just () -- Maybe ()
_|_, Nothing, Just _|_, Just Nothing, Just (Just _|_), Just (Just ()) -- Maybe (Maybe ())
...