Нет, монада категорически не идемпотентна: хотя существует требование, чтобы было естественное преобразование
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 ())