Как справиться с побочным эффектом с Applicative?

Я вижу везде, чтоApplicative может справиться с побочными эффектами, но все простые примеры, которые я видел, просто объединяют такие вещи, как:

> (,,) <$> [1,2] <*> ["a", "b", "c"] <*> ["foo", "bar"]
[(1,"a","foo"),(1,"a","bar"),(1,"b","foo"),(1,"b","bar"),
 (1,"c","foo"),(1,"c","bar"),(2,"a","foo"),(2,"a","bar"),
 (2,"b","foo"),(2,"b","bar"),(2,"c","foo"),(2,"c","bar")]

Что круто, но я не вижу, как это связано с побочными эффектами. Я понимаю, чтоApplicative&nbsp;это слабая монада, и поэтому вы можете обрабатывать побочные эффекты (как вы бы делали с монадой состояния), но вы не можете повторно использовать результат предыдущего побочного эффекта.

Означает ли это, что>>&nbsp;может быть написано дляApplicative&nbsp;и тому подобное

do
  print' "hello"
  print' "world"

будет иметь смысл (сprint' :: a -> Applicative something) (с соответствующим до-аппликативным расширением).

В другом мире есть разница междуMonad&nbsp;а такжеApplicative&nbsp;в том, чтоMonad&nbsp;позволяетx <- ...&nbsp;ноApplicative&nbsp;не делает.

Тогда, монада писателя, просто аппликатив?