Is case var(var x, var y) a valid syntax ?

Brian Goetz brian.goetz at
Mon Sep 7 16:55:41 UTC 2020

> I agree with Alan. While I believe that Rémi is correct insofar as you 
> can write “var” in place of a type in any type pattern “T x”, in a 
> deconstruction pattern “P(...) [d]” the occurrence of P is not a type; 
> rather, it names a deconstructor. 

Exactly right.

> It does so happen that right now all deconstructors (like all 
> constructors) share the name of an associated type, but it is 
> important not to confuse them. You cannot replace a deconstructor name 
> with “var” any more than you can write “new var()” or “new 
> MyInterface()”.

or `new var[3]` or `import var` or `Foo<var> = e`.

More information about the amber-spec-experts mailing list