Don Syme, creator of F#, presented at .Net Fringe 2016 an assessment of the current status of F#. He also commented on the duality that exists in F#, a functional language created on a runtime built for object oriented languages.

F# was released under an open source license in 2010. F# walked the .Net path early, as C# and .Net are open source since 2015. Putting F# open source was mainly to increase its credibility. Back at the time, a language had to be open source in order to be taken seriously by developers and companies.

There was a long standing initiative to bring new languages to .Net. Functional programming languages were isolated, running in their own VM. Interops standards (C-calls, COM, CORBA, XML) made language integration difficult.

The F# approach is to use an already well adopted runtime and to compromise where needed. The language is designed with end-to-end interop in mind. This approach is often used for newer languages such as Scala and Swift.

The F# approach is to embrace objects, make them fit with the expression-oriented typed functional programming. While being a functional language, F# also supports classes, abstract classes and interfaces.

// Class definition type Vector2D (dx:double, dy:double) = let d2 = dx*dx + dy*dy // object internals // Exported properties member v.DX = dx member v.DY = dy member v.Lenght = sqrt d2 member v.Scale(k) = Vector2D (dx * k, dy * k) // Exported method

Classes are supported along with interfaces and abstract classes. One notable addition is the ability to define them anonymously, a feature called object expressions.

type IMathExample = // abstract method abstract member Add: int -> int -> int // abstract immutable property abstract member Pi : float // Interface implementation with object expressions let obj = { new IMathExample with member this.Add x y = x + y member this.Pi = 3.14 }

As the F# language is evolving in several ways, Syme gave an overview of its current status:

Open, cross-platform, neutral, independent

The F# language accepts contributions.

Non-profit organization overseeing it, the F# Software Foundation

Mobile support and tooling through Xamarin

The Visual F# tools from Microsoft provide support for Windows and Azure.

The F# compiler services powers many F# tools projects.

F# 4.1 is underway.

Syme coined a new term while talking about language independence. He defines mimetic independence as the ability to define a technology as an idea independently from another technology, association or vested-interest. F# achieves mimetic independence, while the significant contribution of Microsoft must still be acknowledged. As a counter example, Visual Basic wouldn't qualify as it is completely dependent on Microsoft.