I'm at #hopl and here is a potted history of the addition of what I call "computational modalities" to C# and F# - these include addition of new syntactic forms like comprehensions, or "modal" reinterpretation of existing syntactic forms.
First, in 2000-02, Todd Proebsting of MSR initiated an effort to convince the C# design team to add iterator methods, based on his experience with the Icon language, of SNOBOL fame. Iterator methods serve as a form of computed collection. Image
In 2005-07, those of us in F# looked at iterator methods and past history of tasksm promises, monadic and comprehension syntax to form F# async, F# sequences, F# list comprehensions and the general F# computation expressions. Image
During this same period, Erik Meijer, Anders Hejlsberg et al. were putting the LINQ query syntax into C#, covering an alternative comprehension syntax for IEnumerable and meta-programmed IQueryable and more, influenced by COmega protoype and functional programming Image
Around 2011, the F# 2.0 notion of an async modality flowed into C# 5.0, integrated with state machine compilation from Axum, TPL tasks and other influences. Likewise, F# extended computation expressions to include queries and prototyped async sequences Image
More recently, things have not stood still: Async has flowed out into TypeScript, Python, C++, Kotlin and other languages, C# has added async iterator methods, and F# 5.0 extended computation expressions to include the ability to express applicatives, influenced by Haskell. Image
I may have some details wrong, and there were many other influences and people involved. It's hard to write a comprehensive and fully accurate history, this is my recollection.
The F# applicatives work is documented here: github.com/dsyme/fsharp-p… and github.com/fsharp/fslang-…
Given the sucess of this kind of work in increasing expressivity and productivity when working with compositional computations in production languages - and its partial influence on other languages - it feels worth looking at as a historical slice through recent language design
A full history would include all comprehension and monadic notations, early coroutine additions to C++ and Ada and so on, the history of Icon iterators and SNOBOL and much more. Likely future languages will modify and extend these stories, e.g. using effect handlers etc.
Some of this is covered in this paper: tomasp.net/blog/2013/comp…, also The Early History of F# fsharp.org/history/. Perspectives from other languages may differ.
An anecdote: Todd Proebsting sent me a message saying roughly "I hear you're adding generics to C#. I don't give a damn about generics but can you teach us how to hack the compiler?" (then in C++), then visited in Cambridge. We had a great summer together, I think 2000 or 2001.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Don Syme

Don Syme Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @dsymetweets

5 Nov
Today we rolled out numerous improvements to the F# docs at docs.microsoft.com/dotnet

1. The F# Language Guide is now properly organized, from see docs.microsoft.com/en-us/dotnet/f…
2. The front page now features "F# in practice" including a new page on "F# for web development"

docs.microsoft.com/dotnet/fsharp/…

This includes links to some key frameworks plus a link to the F# Software Foundation guide to F# web development for more comprehensive community listings
This is also linked on the very front page of the .NET docs docs.microsoft.com/en-us/dotnet/#…
Read 12 tweets
10 Sep
A farewell to Simon Peyton Jones as he leaves Microsoft Research

Subject: RE: New horizon
 
I would like to add a few words to what Chris has written.  I know I am also speaking for Mads, the current lead designer of C# (cc’d)
From 1997 to 2015, Simon PJ was pivotal in the Programming Principles and Tools group at MSR Cambridge.  The work of that group included major contributions to the research and practice of programming, a stream of seminal publications,..
... and succeeded in changing the conceptual foundation of programming for millions of programmers through direct contributions to Haskell, C# and F# - and transitively through profound influence on other languages.
Read 35 tweets
7 Sep
#fsharp people

One simple way to help F# is to help us fill in basic F# code samples for all the F# core library functions. These should have been done long ago, but let's do them now!

Here's an example of the sort of thing that needs to be added: github.com/dotnet/fsharp/…
Once integrated, your examples will appear in the F# core library docs here fsharp.github.io/fsharp-core-do…
To make a contribution, simply send a pull request to github.com/dotnet/fsharp/. There's also some more information here: github.com/fsharp/fsharp-…
Read 5 tweets
5 Dec 20
So this testimonial means a lot to me personally, I'll explain why.

@chaldal.com is a global company centred in Dhaka, Bangladesh. You can read more about them on their website.

I've long believed F# could have a strong role in up-tooling the software skills of developing nations, giving them a competitive advantage.
But for me, this one is also very personal.

In 1993 I had the opportunity to travel to Bangladesh, to visit my brother, who was working doing flood modelling on the internationally sponsored Flood Action Program.
Read 9 tweets
5 Dec 20
This testimonial is so good, so thoughtful I'm going to tweet it all.

"We're an F#-first company and I'd like to share our experience here..."

news.ycombinator.com/item?id=253089…
"All our new code is in F#, we started off from a C# codebase, so that made the transition somewhat manageable, as new F# code can be directly called from C#, and vice versa (still took over 2 years)..."
".... All new frontend apps are also being written in F# (using Fable), as of 6 months back, migrating away from TypeScript, this forces everyone into a "design your model first, and well" paradigm...."
Read 15 tweets
14 Aug 20
It's really strange what nonsense people put up with in C#.

This business where expression results are implicitly discarded from statements is just insane in the 21st century. So much information loss just waiting to happen without even a warning.
Other gaping holes in the C# design I've noticed this last week:

- no way to implement interfaces or abstract classes using an expression, meaning stupid extra classes

- no implicit construction for classes (to give another form of closure capture for object imlpementations)
- no expression form for generative list or sequence expressions (making HTML DSLs a mess among other things)

- dynamic is hell waiting to destroy your life
Read 10 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(