Mmm, not sure what you have in mind, but multi-line do blocks in lambdas are very common in Haskell, especially as the last argument to a function that returns IO a. E.g.
Some results have been hidden because they may be inaccessible to you
Show inaccessible results