What are Monads?

So, in short the Monad is a concept of value wrapper.

The value wrapper (monad) has a function which accepts the function as an argument and applies it on wrapped value (or each element of wrapped value if it is a list, depends on particular monad implementation and usage).

If it doesn’t have a “valid” value it should not crash but return some sort of valid result like nil / :error or empty list.