This is a short description of a feature suggestion for F# called inline traits.
An inline trait is similar to an interface, in that it establishes a set of criteria for a type. However, unlike an interface, an inline trait isn’t actually a type in itself. Values do not have a trait type; they can only have a generic type which conforms to an inline trait. It is important to note that, as the inline keyword implies, traits are not part of the CLI type system and everything about them is implemented using code generation, similarly to other inline constructs, and may only be used in the scope of inline members.
Inline traits are defined like this:
inline trait VectorLike<^elem> of ^this =
abstract Add : ^elem -> ^this
abstract Length : int