The Max-Abstraction Impulse, and Everything Else Wrong with Type-Level Genericity

These were my comments on RFC-1124 from F# 7.0, Interfaces With Static Abstract Methods, in the "Drawbacks Section". It forms an essay on everything wrong with this particular form of Statically Constrained Genericity, and many of the things wrong with all the other forms. Drawbacks This feature sits uncomfortably in F#. Its addition to the … Continue reading The Max-Abstraction Impulse, and Everything Else Wrong with Type-Level Genericity

Does the language you use make a difference? – Code metrics for “functional-first” v. “object-first” code

  This post is a very interesting study of the differences between “functional-first” (F#) and “object-first” (C#) design for medium-sized software, by comparing software metrics for a number of C# and F# projects. Here are the conclusions, #3 and #4 are the most important I think. Project complexity. For a given number of instructions, a … Continue reading Does the language you use make a difference? – Code metrics for “functional-first” v. “object-first” code

Some History: 2001 “GC#” research project draft, from the MSR Cambridge team

Regular readers of my blog will know that from time to time I post some historical notes related to the research projects I've been involved in at Microsoft Research. Recently, I was asked some historical questions about our work on .NET Generics in 2001. To help frame an answer, I thought I'd post one of … Continue reading Some History: 2001 “GC#” research project draft, from the MSR Cambridge team

.NET/C# Generics History: Some Photos From Feb 1999

Over the years I've been fortunate enough to work on several different projects. F# is ongoing, has several different aspects (FP, OO, async, units-of-measure etc.) and quite high-visiblity, but perhaps the one that was most timely, most foundational, and most wide-reaching was .NET and C# Generics. Here are some fun photos from the early history … Continue reading .NET/C# Generics History: Some Photos From Feb 1999