F# Programming Language

Updated: Sep 29, 2019 by Pradeep Gowda.

These are the notes on F# language.

See also OCaml.


Development Environment

Working with Nuget

On Mac OSX

Download NuGet.exe Command Line bootstrapper from http://nuget.codeplex.com/downloads/get/222685

Import trusted root certificates from Mozilla’s LXR into Mono’s cert store:

$ mozroots --import --sync
$ certmgr -ssl https://go.microsoft.com
$ certmgr -ssl https://nugetgallery.blob.core.windows.net
$ certmgr -ssl https://nuget.org

Run the bootstrapper:

$ mono --runtime=v4.0.30319 NuGet.exe

Installing packages for a project. For example I checked out https://github.com/saxonmatt/FSharp.GitHubApi and in the .nuget directory:

$ mono --runtime=v4.0.30319 NuGet.exe install ./packages.config -OutputDirectory ./packages

The packages should be under packages directory. ref.

Format of a packages.config file:

<?xml version="1.0" encoding="utf-8"?>
  <package id="FsUnit" version="1.2.1" targetFramework="net40" />
 <package id="NUnit" version="2.6.2" targetFramework="net40" />

The latest/available versions of the packages can be obtained from .

Learning Resources

See also the Books section.

Why FSharp

Application Areas

Build System

Data Access

Interfacing other systems


Machine Learning

Desktop development


Web development



Blogs and Websites



Deployment on Linux

On Linux making a standalone binary is surprisingly easy:

$ fsharpc file.fs # can run the generated file.exe via mono at this point
$ mkbundle --static file.exe -o file

Now ./file is a statically compiled binary. Easy deployment. (src).

Things to learn about F#


Integration with the new dotnet ecosystem

Discussions etc.,

ricksaurus Missing citation