I'm loosely in favour of this for 'do', not quite so keen for lambda expressions - but I have no justifiable reason why, other than "it looks a bit weird".
I don't really like $ from an editor perspective though (tooling has to become aware of a single function when performing refactorings), so anything that helps reduce how prolific that operator is is a win in my book!
Is the following going to be valid code under your extension?
runReaderT
do foo
bar
env
Likewise, I expect the following also parses:
import Control.Monad
main :: IO ()
main = when True
do print "Hello"
- Ollie