It occurs to me now that I can just rewrite "Pat = Expr" as "Pat <- [Expr]" without needing to change semantics at all. I think it might still be worth investigating changes along those I described, but I withdraw my advocacy for them for the time being.