I think it's missing sequencing, for which I personally reach quite often when working with such monadic container types. Eg. for Maybe: 

(sequence-maybe lst) 

if all elements in lst are Just, returns Just of list, whose elements correspond to unwrapped values in lst. If any element in lst is Nothing, returns Nothing.

(sequence-maybe (list (just 'a) (just 'b))) == (just (list 'a 'b))
(sequence-maybe (list (just 'a) (nothing))) == (nothing)