f :: (?callStack::CallStack, Monad m) => (m a, r) -> m b