As chair of R7RS-large, and particularly if SRFI 165 is meant to be incorporated into R7RS-large (as I suppose), I would request that it stick to the informal namespace conventions of such SRFIs, and avoid names such as `run, ask, local, return, sequence, bind, forked, fn, with, with!`.   Short names like this should be left to the user.

I didn't object to such names in SRFI 159 because even though they pollute the global namespace, they are effectively confined to the interior of `show`, and in any case are mostly names unlikely to be used by other libraries.  Not so for SRFI 165, which is a specific monad.  I expect there to be a general monad library eventually in R7RS-large, and even there I am not planning to use such short names (see https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/ContextsCowan.md for my current ideas).

As a personal matter, I think `return` misleading in an imperative language, and suggest the name `pure` instead.  Although in Haskell this is used for class ApplicativeFunctor rather than Monad, they are defined the same way for monads in all recent versions of Haskell, and the use of a different name merely reflects Haskell's monomorphism (which Scheme shares) and its users' aversion to longer names (which Schemers mostly do not share).

====

I also strongly suggest that `current-computation` be made to hold a parameter object whose initial value is a procedure that raises an error, rather than a simple variable.  This is not only more convenient, but necessary, because R7RS allows (and R6RS requires) that imported names not be redefinable.

-- 
John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
"Make a case, man; you're full of naked assertions, just like Nietzsche."
"Oh, i suffer from that, too.  But you know, naked assertions or GTFO."
                        --heard on #scheme, sorta