Some monads come with take-out options, e.g.
In the sense that if unit : A -> List A is given by unit a = [a], then taking the head of a list can be used to retrieve values from inside the monad.
Some monads do not come with take-out options, IO being a notorious example.
Some monads, like Maybe, sit on the fence about take-out. They'll provide it when it's available.
Now, are there references for a theory of monads and take-out options? For example, it seems that all sensible notions of containers have take-out. Can we make the leap and define a container as a monad with a notion of take-out? Has this been done? Are there reasons for not doing? Can we say what conditions are necessary to ensure a notion of take-out?