The definition of maybe-compose is still somewhat confusing.

'mproc' is a procedure   a* -> Container b*   where I note "zero or more values' as a* and b*,
and Container is either Maybe or Either.

The first line says maybe-compose returns an mproc.

The second line says the returned procedure takes a single value 'Container a*'.

It is true that 'Container a*' is a single value, so it still falls into the definition of mproc.  But with the monadic operation, what we expect is

compose :: (a* -> Container b*) -> (b* -> Container c*) -> (a* -> Container b*)

However, the current definition says

compose :: (a* -> Container a*) -> (b* -> Container c*) -> (Container a* -> Container c*)

If *-compose is indeed a composition of mprocs, I expect the following relations and I feel it's more natural:

(maybe-compose x y z) == (maybe-compose x (maybe-compose y z))
                                      == (maybe-compose (maybe-compose x y) z)

(maybe-bind m x y) == (maybe-bind m (maybe-compose x y))

Now, you may indeed intend the current behavior.  If that's the case, at least the first line of the definition should avoid saying "returns an mproc", I think.  But I wonder if that's the current intention, do we need *-compose?