It took me a while to find the correct type constraints (f# compiler was precisely leading me towards that list) in a simple scenario:
type MyEncodingY<'V when
'V: struct and
'V :> System.ValueType and
'V: unmanaged and
'V: (new:unit -> 'V)> () =
I am puzzled. For instance I would have thought that the struct constraint means the same as deriving from ValueType, or that struct and unmanaged are “pretty much” the same and that unmanaged or struct types obviously can be new’d.
I consulted https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/constraints but did not find a list with all the constraints listed above such that I can learn about there different meanings.