The .NET Language Strategy

Mads Torgersen. .Net Blog. 2017-02-01.
I am constantly aware of the enormous impact our language investments have on so many people’s daily lives. Our languages are a huge strength of the .NET platform, and a primary factor in people choosing to bet on it – and stay on it.
I’ve been here on the .NET languages team at Microsoft for more than a decade, and I’ve always seen us have developers’ interests first and foremost in our minds as we moved the languages forward. The open source revolution (of not just the .NET languages but the whole .NET stack) has improved the conversation dramatically, and – I think – helped us to make better choices. However, we haven’t always been good at sharing how we make those decisions: Our language strategy; the framework for how we think about each of our .NET languages and chart their evolution.
This post is meant to provide that additional context for the principles we use to make decisions for each language. You should consider it as guidance, not as a roadmap.

[The .NET Language Strategy]

Programming in the Point-Free Style

Eirik Tsarpalis’ blog. 2017-04-02.
Point-free programming (or point-less programming, for the more cynically inclined) is a paradigm that advocates the formulation of programs by means of function composition. In the point-free style programs avoid explicitly nominating function arguments (or “points”), deriving instead complex function definitions by means of applying higher-order combinators on simpler functions.
[ Eirik Tsarpalis’ blog]


TypeShape is a small, extensible F# library for practical generic programming
TypeShape is a small, extensible F# library for practical generic programming. Borrowing from ideas used in the FsPickler implementation, it uses a combination of reflection, active patterns and F# object expressions to minimize the amount of reflection required by the user in such applications.
TypeShape permits definition of programs that act on specific algebrae of types. The library uses reflection to derive the algebraic structure of a given  System.Type  instance and then applies a variation on the visitor pattern to fully access specific type information.
TypeShape is not a metaprogramming library and does not emit code at runtime.


Langton’s Ant in F#

It has been almost a year since I blogged, been busy with too many things so couldn’t find the time. In my new organisation we interviewed a fresher and while discussing on what coding problem to give we finalised on Langton’s Ant problem. We asked the candidate to implement a minimal console based version which can print each step of the Ant journey on the plane.

[Langton’s Ant in F#]

Walking the Euler Path: Intro

fierval. Viral F# .2016-09-17.
Graphs play their role in bioinformatics which is my favorite area of computer science and software engineering lately. This relationship was the biggest motivator behind this project.
I have been experimenting with a few graph algorithms trying to parallelize them. This is interesting because these algorithms usually resist parallelization since they are fast in their serial version running in O(|E|) or O(|E| + |V|) time (E – the set of edges, V – the set of vertices of the graph). And of course I use any excuse to further explore the F# language.

[Walking the Euler Path: Intro]

Don Syme Presents F# Design Principles at .Net Fringe

Pierre-Luc Maheu. InfoQueue. 2016-09-13.
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.

[Don Syme Presents F# Design Principles at .Net Fringe]