не пришла бы. Интересно. А где-то в официальной документации написано про дистрибутивность x *> (a <|> b)? Мне не попадалось.
2. В любом случае, мы возвращаемся к моему исходному вопросу. MonadPlus имеет явно задокументированный закон, который позволяет "останавливать" вычисления, когда встречается mzero -- mzero >>= f ≡ mzero. Для альтернативы такой закон выполняется (или выводится) "не всегда". Тогда почему guard сделан на аппликативах а не на MonadPlus?
1. такого требования нет, поэтому и закона нет на нуль. Но я не смог придумать контрпример
Обсуждают сегодня