¿Cómo diseñar una pila monádica?

¿Cómo diseñas y construyes tus pilas monádicas? Por primera vez necesito construir una pila monádica (usando transformadores) para resolver un problema del mundo real, pero no estoy completamente seguro de cuálorden Para apilar los transformadores. Como ya sabes, siempre y cuando una computación sea amable* -> *Básicamente, cualquier cosa puede desempeñar el papel de la mónada interna en un transformador, por lo tanto, un par de preguntas:

¿Debería algún transformador en particular estar en la parte superior de la pila (por ejemplo, ReaderT? WriterT?)¿Qué debe impulsar el diseño? ¿Intuición? ¿Tipos? (por ejemplo, dar forma a la pila según las necesidades de su API)Es cada pila isomorfa entre sí (hasta cierto punto) o es probable que, si construyo mi pila incorrectamente, podría terminar por no poder usar ciertas mónadas subyacentes o tener un gran desorden delift . lift . liftIO [...]? Mi instinto sugeriría que, si los transformadores derivan algunos casos (por ejemplo, MonadReader, MonadIO, etc., como la mayoría de los transformadores enmtl do), no debería importar en qué orden coloco los transformadores.

Estoy interesado en escuchar a los experimentados Haskellers sobre las mejores prácticas o las reglas prácticas.

forever $ print "Thanks!"

A.