If we are still not certain about the exact language to describe match then I would ask if the 'case' token is really required. It seems that I would prefer match expr: pattern0: block0 pattern1: block1 ..... else: blockdefault where the else: clause is optional. Also for me the unusual case is the assignment to names in the pattern and I would prefer that that be marked in some way; I didn't like .name, but ?name seems OK (or perhaps => name). Also the restriction that assigned vars should only occur once in a pattern seems wrong. I would regard it as an additional constraint on the match, but I do admit I don't fully understand what's allowed in patterns. Please disregard if the above is totally stupid.