'x => x = 1' in Javascript, is an expression that resolves to a function. I do understand the difference, and it's important.
'match(x) { {x} => foo }' is not a bag of functions but a new use of the '=>' operator that is confusing/surprising. I can get over it, but why should I have to?
'match(x) { {x} : foo }' would be less surprising.
You're saying 'match({x:1}) { ....}' is an expression, but is 'match(x) { {x} => foo }'?, What does it resolve to? It smells like it either isn't an expression (just as you can't write x = switch(x) {...};) or it's a new kind of function.