[isabelle-dev] New Code Generator Target: F#

Achim D. Brucker adbrucker at 0x5f.org
Sun Aug 28 23:49:28 CEST 2022

On Fri, Aug 26, 2022 at 11:58:17PM +0200, Makarius wrote:
> Thanks. From your explanations, I have learned many things about F# and dotnet.
> Can you also say what your applications are?

Hard to summarize in a few sentences. My original interest (way back in 2007, when 
fiddling with mono was still required on Linux) was driven by the need to interact,
from Isabelle generated code, with Microsoft APIs for which nice packages were only 
available on dotnet. Access to Microsoft tooling and APIs is still a big motivation.

England, at least the South West, seems to be in a strong grip by Microsoft, i.e., 
the Uni IT and also local project partners (mostly SMEs, which is likely also a 
contributing factor) essentially require that one can interact with dotnet for joint 
projects. Positively, there is also a quite strong community of F# developers/companies  
(e.g., using the SAFE stack https://safe-stack.github.io/ that allows developing web 
applications type-safe in F#) in England ... 

Personally, it's more the "I can program in ML and have easy access to all the shiny 
frameworks (via https://www.nuget.org/), a reasonable well working package manager/build 
systems, and IDE support (e.g., Ionice in VSCode)" that makes it an attractive platform. 
A lot of the problems I solve with F# these days are "mid-size" data processing/conversions 
tasks (that other people might solve in Python). 

The combination of having a strongly typed programming language with pattern matches 
and also having access to databases, type providers for web scraping, and parser/validators
for many formats available as libraries is a nice sweet spot. Overall, very similar 
to Scala on the Java platform. Also very similar to Scala, F# also has the "dualism" of 
larger compiled programs and scripts that can directly be executed. 

While there are good web-stacks for F# (that essentially require nearly no JavaScript
programming), good cross-platform UIs for desktop apps did essentially not exists 
(respectively, the ones that did exist were mostly generating Node.js/Electron
applications). This seems to change right now - also Microsoft seems to see a 
need for a cross-platform UI framework for dotnet. 
> Dotnet was once positioned as the next big thing, but recently we have seen
> more excitement elsewhere (even by Microsoft): e.g. Node.js/Electron.

It's clearly not as hyped as node.js/Electron. On the other hand, upgrades of 
project across major versions of the underlying framework have been less painless 
for F# than for the few node.js projects I am involved with ;-).


More information about the isabelle-dev mailing list