До сих пор каждая монада (которая может быть представлена как тип данных), с которой я столкнулась, имела соответствующий трансформатор монады или могла иметь ее. Есть ли такая монада, которая не может иметь ее? Или все монады имеют соответствующий трансформатор?
Трансформатором t, соответствующим monad m, я имею в виду, что t Identity изоморфен m. И, конечно же, он удовлетворяет законам трансформатора монады и что t n является монадой для любой монады n.
Я хотел бы увидеть либо доказательство (в идеале конструктивное), которое имеет каждая монада, либо пример конкретной монады, у которой ее нет (с доказательством). Меня интересуют как более ориентированные на Haskell ответы, так и теоретические (категории).
В качестве последующего вопроса существует ли монада m, имеющая два разных трансформатора t1 и t2? То есть t1 Identity изоморфно t2 Identity и m, но существует монада n такая, что t1 n не изоморфна t2 n.
(IO и ST имеют специальную семантику, поэтому я не учитываю их здесь и полностью игнорирую их). Пусть сосредоточены только на "чистых" монадах, которые могут быть построены с использованием типов данных.)