This is too long for a comment, so I am posting it as an answer.
Constructor
Test receives two arguments as its parameters, and not one argument, which is a tuple. I admit that * between arguments seems confusing. But the signature of Guid -> string -> Test even worse. Constructors must receive some inputs and instantiate a new type. Fuzzy form and partial application do not make sense in the context of constructors.
I think the brackets help clarify here.
type Test (id : System.Guid, name : string) = member this.Id = id member this.Name = name
creates new : id:Guid * name:string -> Test , and
type Test (tuple: System.Guid * string) = let id, name = tuple member this.Id = id member this.Name = name
gives me new : tuple:(Guid * string) -> Test in an FSI session. I am using F # 2.0 / MonoDevelop 3.0 for writing.
Regarding the creation of type signatures, I usually send the code to F # Interactive and copy the received signatures to fsi files to avoid errors. If the tooltips and F # Interactive display signature signatures on the VS2012 RC, you should report this in the fsbugs (at) microsoft (dot) com file.
source share