One of the monad laws is that (m-bind (m-result v) f) should be the same as (f v). However, this is not the case in maybe-m:
user=> (with-monad maybe-m (m-bind (m-result nil) nil?))
user=> (nil? nil)
The crux of the problem is that in algo.monad's maybe-m, there is no way to wrap a nil in a Just-like container.