«Интроспективный писатель»?Кажется, что интересным, что вы можете сделать с этим (что вы не можете сделать с Writer), является написание функции интроспекции, которая проверяет состояние / вывод и изменяет его:
introspect :: (s -> s) -> M s ()
introspect f = M $ \s -> (f s, ())
Я не вижучто вы можете сделать это для писателя, я думаю, что вы должны обойтись с посттрансформатором вместо:
postW :: Writer w a -> (w -> w) -> Writer w a
postW ma f = Writer $ let (w,a) = getWriter ma in (f w,a)