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.

How might we improve InfoQ for you
Thank you for being an InfoQ reader.
Each year, we seek feedback from our readers to help us improve InfoQ. Would you mind spending 2 minutes to share your feedback in our short survey? Your feedback will directly help us continually evolve how we support you.
Community comments