These are the notes on F# language.
See also OCaml.
- VS Code with Ionide is very good.
- Xamarin Studio on Mac OSX and Windows.
- F# language support for editors (Emacs, Vim).
- F# Has Won Me Over: Coming to .Net World from Outside .Net | Tom Prior
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
$ mono --runtime=v4.0.30319 NuGet.exe install ./packages.config -OutputDirectory ./packages
The packages should be under
packages directory. ref.
Format of a
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="FsUnit" version="1.2.1" targetFramework="net40" /> <package id="NUnit" version="2.6.2" targetFramework="net40" /> </packages>
The latest/available versions of the packages can be obtained from .
- F# Wikibook.
- Try F# – online REPL to try out Fsharp without installing it on your system. Has preloaded libraries to do Data science, Data visualisation, Financial computing etc.,
- Programs as Data course at ITU.dk used F# among other FP languages.
- FSharp cheatsheet
- Programming languages and paradigms at McGill.
- Connel Hooley - A C# Developer’s Guide to F#
See also the Books section.
- F# introduction for my coworkers
- Use F# to Write Clean, Concise Code to Solve Complex Problems Faster than C#
- FAKE – F# Make.
Interfacing other systems
- The Aardvark Platform. – “Awesome libraries from math to interactive high-performance graphics applications.”
- From Elm To Fable | Lucas Reis’ Blog
- F# for HTML5 web applications.
- F# + Service Stack on Linux.
SAFE is an application development stack that brings several technologies together into a single, coherent stack for
type-safe, flexible, web-enabled applications that can be written almost entirely in F#
- Suave model for server-side web programming
- Azure for cloud-based systems
- Elmish for an easy-to-understand UI programming model
- Announcing Try F# on WebAssembly
- Real world Fsharp programming by Tomas Petricek with John Skeet.
- Parts of Real world Fsharp programming appear to be available online at MSDN.
- Fsharp Deep Dives by Tomas Petricek and Phillip Trelford. Not an introductory book.
Blogs and Websites
- Probably the most comprehensive F# weekly news.
- Blog Archive - Mavnn’s blog – many introductory blog posts (FAKE, Type providers, Suave etc.,)
- FSharp For Fun and Profit – ways that F# can help in day-to-day development of mainstream commercial business software.
- Don Syme’s blog.
- Trelford F# posts.
- Tomas Petricek’s blog.
- Moirae software.
- F# news by Jon Harrop.
- Richard Minerich a.k.a \@ricksaurus.
- Luke Hoban’s blog (blog appears to be inactive since end of 2010).
- Inside F#
- Andrew Kennedy
- Simon Tyler Cousins
- Fsharp for Game dev
- The burning Monk.
- FPish hub.
- Demystify FP. See this seven? part series on Hopac – Concurrent Programming in fsharp using Hopac (Part-I) | Demystify FP
- An unassuming F# study plan
- A gentle introduction to Machine Learning with F#.
- Type Driven Domain Modelling, part 1 | Lucas Reis’ Blog
- Why we use fsharp data in prod
- Open F# 2018 Oct 2018. Success story.
- F# Advent Calendar in English 2018. A collection of over 60 articles.
- Create a wrapper around
- Nuget install packages –
$ nuget install -OutputDirectory packages -ExcludeVersion FAKE
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
./file is a statically compiled binary. Easy deployment. (src).
Things to learn about F#
- Playing with F# in the
- Playing with F# libraries by installing packages in a sandboxed environment and importing them via
- Creating new applications that use third party libraries.
- Packaging F# applications to be deployed on - [Linux, Mac and Windows]
- Cross compilation issues
- Using FAKE and NuGet effectively.
- Funscript – write F#, get it compiled to JS.
- Type providers for various data formats and data sources.
- Deedle: Exploratory data library for .NET
Integration with the new