Qual é o exemplo de uma Mônada que é uma alternativa, mas não uma MonadPlus?

Emsua resposta para a questão“Distinção entre typeclassesMonadPlus, AlternativeeMonoid?Edward Kmett diz que

Além disso, mesmo seApplicative foi uma superclasse deMonad, você acabaria precisando doMonadPlus classe de qualquer maneira, porque obedecendo

empty <*> m = empty

não é estritamente suficiente para provar que

empty >>= f = empty

Então, alegando que algo é umMonadPlus é mais forte do que afirmar que éAlternative.

É claro que qualquer functor aplicativo que énão uma mônada é automaticamente um exemplo deAlternative que não é umMonadPlus, mas a resposta de Edward Kmett implica que existe umamonga que é umAlternative mas não umMonadPlus: Estáempty e<|> satisfaria oAlternative leis,1 mas não oMonadPlus leis.2 Eu não consigo dar um exemplo disso sozinho. Alguém sabe de um?

1 Não consegui encontrar uma referência canônica para um conjunto deAlternative leis, mas eu esqueço o que eu acredito que eles sejam mais ou menos na metademinha resposta para a questão“Confuso pelo significado doAlternative tipo class e seu relacionamento com outras classes de tipos ” (procure a frase “distributividade direita”). As quatro leis que eu acredito que devem conter são:

Distribuição certa (de<*>):  (f <|> g) <*> a = (f <*> a) <|> (g <*> a)Absorção correta (para<*>):  empty <*> a = emptyDistribuidora esquerda (defmap):  f <$> (a <|> b) = (f <$> a) <|> (f <$> b)Absorção esquerda (porfmap):  f <$> empty = empty

Eu também ficaria feliz em aceitar um conjunto mais útil deAlternative leis.

2 Eu sei dissohá alguma ambiguidade sobre o que oMonadPlus leis são; Estou feliz com uma resposta que usa distribuição esquerda ou captura à esquerda, embora eu prefira fracamente a primeira.

questionAnswers(1)

yourAnswerToTheQuestion