Cómo usar (->) instancias de Monad y confusión sobre (->)

En diferentes preguntas he encontrado pistas en los comentarios sobre el uso de(->) instancia de mónadas, p. para realizar un estilo sin puntos.

En cuanto a mí, esto es un poco demasiado abstracto. Ok, he visto instancias de Arrow en(->) y me parece que(->) se puede usar en anotaciones de instancia, pero no en declaraciones de tipo (eso sería solo para otra pregunta).

Tiene alguien ejemplos usando(->) como instancia de Monad? ¿O un buen enlace?

Siento que esta pregunta ya haya sido discutida aquí, pero buscando"(->) Instancia Monad " te da muchos éxitos como puedes imaginar ... ya que casi todas las preguntas sobre Haskell en algún lugar involucran a(->) o "Mónada".

Respuestas a la pregunta(2)

Su respuesta a la pregunta