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

Makarius makarius at sketis.net
Sat Nov 5 23:29:23 CET 2022


On 04/11/2022 20:40, Florian Haftmann wrote:
> 
> Meanwhile in personal conversation Tobias and me finally agreed that, 
> concerning code generation itself, the best solution is to follow Achim’s 
> original proposal and put the F# serializer into the distribution.
> 
> @Makarius – while the .NET component setup looks promising for me, I am no 
> expert in that area and I think we need your final judgement on this.

I have spent some time with the "isabelle dotnet_setup" script by Achim and 
have turned the main ideas into proper "lambda calculus for systems 
programming" (aka Scala): 
https://isabelle-dev.sketis.net/source/isabelle/browse/default/src/Pure/Tools/dotnet_setup.scala;da85bffef443

The key by Microsoft documentation is here: 
https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script


So this is our NEWS entry in Isabelle/da85bffef443:


*** System ***

* The command-line tools "isabelle dotnet_setup" and "isabelle dotnet"
support the Dotnet platform (.NET), which includes Fsharp (F#). This
works uniformly on all Isabelle OS platforms, even as cross-platform
installation: "isabelle dotnet_setup -p linux_arm,linux,macos,windows".

Example:

   isabelle dotnet_setup
   isabelle dotnet fsi
   > 1 + 1;;
   > #quit;;


The multiplatform installation script from the Dotnet project looks fairly 
robust. At least the "1 + 1" example works smoothly on all Isabelle platforms.

For the cross-platform installation of windows on linux, I have used the 
"powershell" snap of Ubuntu 22.04 LTS, just for the fun of it.


So the main remaining question for Isabelle/HOL codegen support is the proper 
spelling of "F#". I would say it is "Fsharp" for the Isar command syntax and 
"fsharp" in plain ML names.


	Makarius



More information about the isabelle-dev mailing list