[(maybe-fail (vector 'fail)) (maybe-unit (\ x x)) (maybe-bind (\ m (\ f (if (eq? m fail) maybe-fail (f m)) )))]