I can't think of many uses for this, but two things you can do are
- inherit from it, albeit derived types must not be instantiable either
- extend it with static members (although this is better achieved with modules, which can also be extended)
type Abc =
member this.A = 10
[<Class>]
type Def =
inherit Abc
type Abc with
static member Foo() = ()
In C#, Code Contracts for an interface or abstract class are defined in a "contract class" which must be marked abstract and have a private constructor (i.e. it's non-instantiable). This, in my opinion, is a better way of accomplishing that. But C# doesn't support constructor-less classes.