This is clickbait title, because can do it:


Monads are a way to handle side effects in functional programming, and they can be useful for structuring code that deals with side effects in a predictable and composable way. Monads work by wrapping a value in a context, such as an option or a future, and providing methods, such as **bind** and **map**, that allow you to operate on the value in a way that preserves the context.

However, monads are not always easy to compose. One of the main issues is that monads are not composable in the sense that you cannot simply chain them together like you can with regular functions.

This is because each monad has its own context, which might not be compatible with the context of other monads, and it requires explicit handling to compose them together. For example, when you have multiple monads with different contexts, you need to use the **flatMap** method to combine them instead of the simple **map** method.

Additionally, when you have monads with different context and need to compose them together, you might also need to use a “Monad Transformer” which is a specific type of monad that allows you to compose monads with different context.

Therefore, Monads are not always easy to compose and require explicit handling and understanding of the context for the proper composition.

https://stackoverflow.com/questions/7040844/applicatives-compose-monads-dont

https://carlo-hamalainen.net/2014/01/02/applicatives-compose-monads-do-not/


🌱 Back to Garden