I've also done stuff like
x <- m1;
f x;
x <- m 2;
f x;
in a do-block, and it's not clear to me how to write 'shadowfrom' (or however you pronounce '<-' in that context).