Awesome F#
A curated list of awesome F# frameworks, libraries, software and resources.
Table of Contents
- Awesome F#
- F# wrappers for popular .NET libraries
- Actor frameworks
- Build tools
- Cloud
- Compilers
- Concurrent, asynchronous and parallel programming
- Configuration
- Data Science
- Development Tools
- Game development
- General purpose libraries
- GUI
- HTTP Clients
- Logging
- Package Management
- Parsing
- PreCompilation
- Search
- Serialization
- Simulation
- Testing
- Type providers
- Visualization
- Web frameworks
- .Net Core Templates
- Resources
F# wrappers for popular .NET libraries
Looking to have a more enjoyable experience when consuming a popular .NET library? Here is a quick table.
.NET Library | F# Wrapper |
---|---|
Avalonia | Avalonia.FuncUI |
ASP.NET Core | Giraffe (+ optionally Saturn) |
ASP.NET Core Blazor | Bolero |
MSTest/NUnit/xUnit.net | FsUnit |
System.Text.Json | FSharp.SystemTextJson |
WPF | Elmish.WPF |
Xamarin.Forms | Fabulous |
Actor frameworks
- Akka.NET ★ 2239 ⧗ 0 - Community-driven port of the popular Java/Scala framework Akka to .NET. [Apache 2.0]
- Akkling ★ 45 ⧗ 1 - F# typed API for Akka.NET. [Apache 2.0]
- Cricket ★ 141 ⧗ 380 - Actor framework for F#. [Unlicense]
- Orleankka ★ 175 ⧗ 5 - Functional API for Orleans Framework. [Apache 2.0]
- Orleans ★ 2754 ⧗ 0 - Distributed Virtual Actor Model. [MIT]
- Proto.actor ★ 692 ⧗ 0 - Cross-platform actor framework for .NET, GO, JAVA and KOTLIN. [Apache 2.0]
Build tools
- FAKE ★ 733 ⧗ 0 - "F# Make" is a cross platform build automation system. [Apache 2.0]
- Xake ★ 8 ⧗ 0 - Another MAKE utility implementation on F#, fully declarative with no-brain parallelism, inspired by Shake. [MIT]
Cloud
- FsFirestore - Functional F# library to access Firestore database hosted on Google Cloud Platform (GCP) or Firebase. [MIT]
- Chia ★ 3 ⧗ 0 - Chia is a F# library which contains HelperFunctions for reporting, logging and Azure cloud operations. [Apache-2.0]
Code Generation
- Hawaii - A dotnet CLI tool to generate type-safe F# clients from OpenAPI/Swagger services.
Compilers
- F# Compiler Services ★ 159 ⧗ 0 - The F# Compiler, F# Interactive scripting engine and F# editing services as a component library. [Apache 2.0]
- Fable ★ 808 ⧗ 0 - F# to JavaScript Compiler. [Apache 2.0]
- Fez ★ 49 ⧗ 0 - F# to Erlang compiler. [MIT]
- FSharp ★ 1549 ⧗ 0 - The Open Edition of the F# compiler, core library and tools. [Apache 2.0]
- FunScript ★ 446 ⧗ 64 - F# to JavaScript compiler with JQuery etc. mappings through a TypeScript type provider. [Apache-2.0]
- Juniper ★ 73 ⧗ 0 - Functional Reactive Programming for the Arduino and other microcontrollers. [MIT]
- Pengines.Client ★ 3 ⧗ 0 - sandboxed Prolog environment. [BSD-2-Clause]
- Visual F# ★ 988 ⧗ 0 - The Visual F# compiler and tools. [Apache 2.0]
Concurrent, asynchronous and parallel programming
- FIO - A type-safe, highly concurrent and asynchronous library for F# based on pure functional programming [GNU v3]
- FSharp.Control.AsyncSeq ★ 28 ⧗ 12 - Collection of asynchronous programming utilities for F#. [Apache 2.0]
- FSharp.Control.FusionTasks - F# Async workflow <--> .NET Task/ValueTask easy seamless interoperability library.
- FSharpx.Async ★ 37 ⧗ 56 - Collection of asynchronous programming utilities for F#. [Apache 2.0]
- Giraffe.Tasks ★ 13 ⧗ 0 - task computation expression to work natively with .NET's Tasks from an F# application. [Apache 2.0]
- Hopac ★ 268 ⧗ 7 - Concurrent ML style concurrent programming library for F#. [MIT]
- Ply - High performance System.Threading.(Value)Task computation expressions for F#. [MIT]
- Reaction.AsyncRx - An implementation of Async Observables in F# for .NET and Fable. [MIT]
- TaskBuilder.fs - F# computation expression builder for System.Threading.Tasks. [CC0]
Configuration
- Argu ★ 145 ⧗ 0 - Declarative CLI argument/XML configuration parser for F# applications. [MIT]
- docopt.fs ★ 18 ⧗ 0 - command line arguments parser, F# port of docopt. [MIT]
- FsConfig ★ 14 ⧗ 1 - F# library for reading configuration data from environment variables and AppSettings with type safety. [Unlicense]
- Skid ★ 3 ⧗ 0 - Simple, single-file portable CLI utility for configuration templating. [MIT]
Data Science
- Deedle ★ 347 ⧗ 21 - Deedle: Exploratory data library for .NET. [BSD-2-Clause]
- Deep.Net - Deep learning library for F#. Provides symbolic model differentiation, automatic differentiation and compilation to CUDA GPUs. [Apache 2.0]
- DiffSharp ★ 106 ⧗ 70 - DiffSharp is a functional automatic differentiation (AD) library. [BSD-2-Clause]
- FsLab ★ 97 ⧗ 171 - FsLab is a collection of libraries for data-science. It provides a rapid development environment that lets you write advanced analysis with few lines of production-quality code. [Apache 2.0]
- IfSharp * 272 ⧗ 1 - F# for Jupyter Notebooks. [BSD-3-Clause]
- m2cgen - A CLI tool to transpile trained classic ML models into a native F# code with zero dependencies. [MIT]
- Math.NET Numerics ★ 1,923 ⧗ 0 - Math.NET Numerics aims to provide methods and algorithms for numerical computations in science, engineering and every day use. F# specific bindings available. [MIT]
- Math.NET Symbolics ★ 203 ⧗ 5 - Math.NET Symbolics is a basic open source computer algebra library for .NET, Silverlight and Mono written entirely in F#. [MIT]
- SIMDArray ★ 42 ⧗ 11 - SIMD enhanced Array extensions for faster computation. [MIT]
- Synapses - Neural network library in F#. [MIT]
Development Tools
IDE
- F# Playground - Minimal playground for F#. [GPL 3.0]
- Jetbrains Rider - Cross-Platform .Net IDE with F# support. [Proprietary, free for open source projects]
- MonoDevelop - Cross-platform IDE mostly aimed at Mono/.NET developers. [LGPLv2 and X11/MIT]
- Visual Studio - IDE from Microsoft with first class F# support(Windows only). [Proprietary]
Editor plugins
- Emacs F# mode ★ 80 ⧗ 27 - F# support in Emacs (including Intellisense and Interactive mode) [Apache 2.0]
- F# Bindings ★ 321 ⧗ 261 - Archive of F# Language Bindings for Open Editors. [Apache 2.0]
- Fantomas ★ 472 ⧗ 115 - F# code formatter. [Apache 2.0]
- FSharpLint ★ 223 ⧗ 55 - F# code linter. [MIT]
- FSharpFar ★ 33 ⧗ 54 - F# support for Far Manager. [BSD-3-Clause]
- Ionide - Atom Editor and Visual Studio Code package suite for cross platform F# development. [MIT]
- Vim F# ★ 66 ⧗ 3 - F# support for Vim. [MIT]
- neofsharp.vim - Basic F# support for (Neo)Vim [MIT]
- VimSpeak ★ 305 ⧗ 910 - VimSpeak lets you control Vim with your voice using speech recognition. [MIT]
- Visual F# Power Tools ★ 310 ⧗ 53 - Power commands for F# in Visual Studio. [Apache 2.0]
- fsharp-notebook - Data Science Notebook for F# interactive. [MIT]
Performance analysis
- fasm - F# jit disassembler, as a dotnet tool [MIT]
General purpose libraries
- Aether ★ 71 ⧗ 0 - Optics library for F#, similar to the Haskell Data.Lens package. [MIT]
- Chessie ★ 96 ⧗ 272 - Railway-oriented programming. [Unlicense]
- Donald - A simple F# interface for ADO.NET. [Apache-2.0]
- DustyTables ★ 39 ⧗ 6 - Thin F# API for SqlClient for easy data access to ms sql server with functional seasoning on top [MIT]
- ExtCore ★ 96 ⧗ 0 - Extended core library for F#. [Apache 2.0]
- Fling - Fling significantly reduces boilerplate needed to efficiently save/load complex domain entities to/from multiple tables. [MIT]
- FSharp.CosmosDb - An F# wrapper around the CosmosDB SDK, making it more functional-friendly [MIT]
- FSharp.HashCollections ★ 4 ⧗ 0 - Library providing fast hash based immutable map and set. [MIT]
- FSharpLu ★ 133 ⧗ 20 - Lightweight utilities for string manipulations, logging, collection data structures, file operations, text processing, security, async, parsing, diagnostics, configuration files and Json serialization. [MIT]
- FsToolkit.ErrorHandling - Clear, simple and powerful error handling with railway-oriented programming. Inspired by Chessie. [MIT]
- Fumble ★ 30 ⧗ 0 - Thin F# API for Sqlite for easy data access to sqlite database with functional seasoning on top [MIT]
- FSharpPlus ★ 142 ⧗ 34 - Extensions for F#. [Apache 2.0]
- FSharpx.Extras ★ 589 ⧗ 28 - FSharpx.Extras is a collection of libraries and tools for use with F#. [Unlicense]
- LiteDB.FSharp - F# Support for LiteDB, an embedded single file database for .NET [MIT]
- Npgsql.FSharp - Thin F# wrapper around Npgsql, the PostgreSQL database driver [MIT]
- TypeShape ★ 64 ⧗ 0 - Small, extensible F# library for practical generic programming. [MIT]
- Validus - A composable validation library for F#, with built-in validators for most primitive types and easily extended through custom validators.
- Vp.FSharp.Sql - Generic F# ADO Provider Wrapper (SqlServer, PostgreSql, Sqlite). [MIT]
Game development
- FsUnity - F# Libraries, Tools, and Plugins for the Unity3d Game Engine. [Unilicense]
- Garnet ★ 15 ⧗ 6 - Garnet is a lightweight game composition library for F# with entity-component-system (ECS) and actor-like messaging features. [MIT]
- Godot - Tutorial how to use F# with Godot.
- Nu Game Engine ★ 502 ⧗ 9 - Cross-platform F# 2D game engine built in the functional style. Uses SDL2 and Farseer Physics. [MIT]
GUI
- Avalonia.FuncUI - Develop cross-platform MVU GUI Applications using F# and Avalonia
- Epoxy - An independent flexible XAML MVVM library for .NET
- Fabulous - F# Functional App Development, using declarative dynamic UI
HTTP Clients
- Http.fs - A simple, functional HTTP client library for F#
- FsHttp - A convenient library for consuming HTTP/REST endpoints via F#. [Apache 2.0]
- Oryx - A high performance .NET cross platform functional HTTP request handler library for writing HTTP clients and orchestrating web requests. [Apache 2.0]
Logging
- FsLibLog ★ 26 ⧗ 0 - FsLibLog is a single file you can copy paste or add through Paket Github dependencies to provide your F# library with a logging abstraction. [MIT]
- Logary ★ 259 ⧗ 0 - Logary is a high performance, multi-target logging, metric, tracing and health-check library for mono and .Net. [Apache 2.0]
Package Management
- NuGet - NuGet is the package manager for the Microsoft development platform including .NET. [Apache 2.0]
- Paket ★ 903 ⧗ 0 - Dependency manager for .NET with support for NuGet packages and Git repositories. [MIT]
Parsing
- FParsec ★ 50 ⧗ 0 - FParsec is a parser combinator library for F#. [BSD-2-Clause]
- FsAttoparsec ★ 1 ⧗ 0 - Port of Bryan O'Sullivan's attoparsec from Haskell to F#. [BSD-3-Clause]
- XParsec ★ 29 ⧗ 2 - Extensible, type-and-source-polymorphic, non-linear applicative parser combinator library for F# 3.0 and 4.0. [BSD-3-Clause]
PreCompilation
- Myriad ★ 38 ⧗ 4 - Myriad is a pre-compilation code generator
Serialization
- FsCodec ★ 21 ⧗ 7 - F# Event-Union Contract Encoding with versioning tolerant converters. [Apache 2.0]
- FSharp.Json ★ 72 ⧗ 15 - F# JSON Reflection based serialization library. [Apache-2.0]
- FSharp.SystemTextJson ★ 36 ⧗ 0 - System.Text.Json extensions for F# types. [MIT]
- Fleece ★ 94 ⧗ 76 - Fleece is a JSON mapper for F#. It simplifies mapping from a Json library's JsonValue onto your types, and mapping from your types onto JsonValue. [Apache-2.0]
- FsPickler ★ 195 ⧗ 13 - Fast, multi-format messaging serializer for .NET. [MIT]
- Legivel ★ 19 ⧗ 4 - F# Yaml 1.2 parser. [Unlicense]
- Thoth.Json ★ 40 ⧗ 11 - Json encoder/decoder library inspire by Elm. [MIT]
Search
- FlexSearch ★ 133 ⧗ 14 - high performance REST/SOAP services based full-text searching platform built on top of the popular Lucene search library. [Apache 2.0]
Simulation
- F# RISC-V Instruction Set formal specification - RISC-V CPU formal ISA Specification. RISC-V CPU simulator with ELF files execution. [MIT]
Testing
- altcover ★ 139 ⧗ 0 - Cross-platform coverage gathering and processing tool set for .net/.net core and Mono. [MIT]
- canopy ★ 304 ⧗ 2 - F# web automation and testing framework. [MIT]
- Expecto ★ 124 ⧗ 2 - Smooth testing framework for F# with tests-as-values and parallelism by default. [Apache 2.0]
- FsCheck ★ 415 ⧗ 34 - Random Testing for .NET. [BSD-3-Clause]
- fsharp-hedgehog ★ 42 ⧗ 4 - Property-based testing system for F#. [Apache 2.0]
- FsUnit ★ 340 ⧗ 86 - FsUnit makes unit-testing with F# more enjoyable. It adds a special syntax to your favorite .NET testing framework. [MIT]
- NBomber ★ 14 ⧗ 23 - simple load testing framework for Pull and Push scenarios. [Apache 2.0]
- Persimmon ★ 29 ⧗ 9 - Unit test framework for F# using computation expressions. [MIT]
- unquote ★ 88 ⧗ 17 - Write F# unit test assertions as quoted expressions. [Apache 2.0]
- xUnit.net - Free, open source, community-focused unit testing tool for the .NET Framework. [Apache 2.0]
Type providers
- ApiaryProvider ★ 9 ⧗ 380 - Type provider for Apiary.io. [Apache 2.0]
- AzureStorageTypeProvider ★ 45 ⧗ 20 - F# Azure Type Provider which can be used to explore Blob, Table and Queue Azure Storage assets and easily apply CRUD operations on them. [Unilicense]
- COM Type Provider ★ 36 ⧗ 330 - Type provider for COM interop. [Unilicense]
- DynamicsCRMProvider ★ 8 ⧗ 380 - Type provider for Microsoft Dynamics CRM 2011. [Apache 2.0]
- ExcelProvider ★ 45 ⧗ 75 - Excel type provider. [Unilicense]
- Facil - Facil generates F# data access source code from SQL queries and stored procedures. Optimized for developer happiness. [MIT]
- FSharp.Configuration ★ 60 ⧗ 6 - The project contains type providers for the configuration of .NET projects. Handles AppSettings, ResX, Yaml and Ini files. [Apache 2.0]
- FSharp.Data ★ 375 ⧗ 8 - Data science library that contains type providers for CSV, HTML, JSON, XML, and WorldBank data. [Apache 2.0]
- FSharp.Data.DbPedia ★ 9 ⧗ 379 - F# type provider for DBpedia. [Unilicense]
- FSharp.Data.HiveProvider ★ 8 ⧗ 379 - Demonstrator F# type provider for Apache Hive. [Apache 2.0]
- FSharp.Data.Npgsql ★ 6 ⧗ 1 - F# type providers library on a top of well-known Npgsql ADO.NET client library. [Apache 2.0]
- FSharp.Data.SqlClient ★ 121 ⧗ 16 - F# Type Provider for statically typed access to T-SQL command parameters and result set. [Apache 2.0]
- FSharp.Data.Tdms ★ 0 ⧗ 1 - TDMS support for F# [MIT]
- FSharp.Data.Toolbox ★ 38 ⧗ 7 - Library for various data access APIs based on FSharp.Data. The library currently includes the Twitter type provider for access to Twitter users and feeds, and SAS type provider to read SAS dataset files. [Apache 2.0]
- FSharp.Data.TypeProviders ★ 9 ⧗ 379 - Library that contains type providers for
.edmx
files,.dbml
files, WSDL services, OData services, and SQL databases. [Unilicense] - FSharp.Management ★ 59 ⧗ 1 - The project contains various type providers for the management of the machine. Handles file system, registry, Windows Management Instrumentation, PowerShell and SystemTimeZones. [Apache 2.0]
- FSharp.Text.RegexProvider ★ 29 ⧗ 285 - Type provider for regular expressions. [Apache 2.0]
- FsXaml ★ 158 ⧗ 453 - F# Tools for working with XAML Projects. [MIT]
- FsYaml ★ 33 ⧗ 41 - Typed Yaml library for F#. [NYSL Version 0.9982]
- GraphProvider ★ 21 ⧗ 379 -
.dgml
state machine type provider. [Apache 2.0] - MatDataProvider ★ 6 ⧗ 378 - Erased type provider for
.mat
files (binary MATLAB format files). [Apache 2.0] - R Type Provider ★ 159 ⧗ 365 - Type provider to interop with R. [BSD-2-Clause]
- Rezoom.SQL ★ 7 ⧗ 0 - Statically typed SQL for F#. [MIT]
- S3Provider ★ 16 ⧗ 379 - Experimental type provider for Amazon S3. [MIT]
- SQLProvider ★ 192 ⧗ 7 - General F# SQL database erasing type provider, supporting LINQ queries, schema exploration, individuals, CRUD operations and much more besides. [Apache 2.0]
- SwaggerProvider ★ 81 ⧗ 3 - F# generative Type Provider for Swagger. [Unilicense]
Creating type providers
- FSharp.TypeProviders.StarterPack ★ 104 ⧗ 42 - The ProvidedTypes SDK for creating F# type providers. [Apache 2.0]
- RestProvider ★ 14 ⧗ 258 - Create type providers just by implementing a simple REST service. [Apache 2.0]
Visualization
- FSharp.Charting ★ 186 ⧗ 0 - Charting library suitable for interactive F# scripting. [MIT]
- SharpVG ★ 32 ⧗ 0 - Create SVG vector graphics in F#. [MIT]
- XPlot ★ 173 ⧗ 0 - A plotting library for the F# programming language. [Apache 2.0]
- GG.Net - Visualization library for data scientists. [MIT]
- Plotly.NET - A Plotly-based general purpose plotting library for F#. [MIT]
Web frameworks
- Bolero ★ 629 - F# in WebAssembly, develop SPAs with the full power of F# and .NET Blazor. [Apache 2.0]
- Falco - A functional-first toolkit for building brilliant ASP.NET Core applications using F#.
- Felicity - Boilerplate-free, idiomatic JSON:API for your beautiful, idiomatic F# domain model. Optimized for developer happiness. [MIT]
- Freya ★ 241 ⧗ 7 - Modern, purely functional stack for web programming in F#. [Apache 2.0]
- Genit ★ 62 ⧗ 1 - Cross-platform website generator and server using F#, Suave and PostgreSQL or MS SQL Server.
- Giraffe ★ 526 ⧗ 49 - Native functional ASP.NET Core web framework for F# developers. [Apache 2.0]
- Saturn ★ 62 ⧗ 2 - Opinionated, web development framework for F# which implements the server-side, functional MVC pattern. [MIT]
- Suave ★ 756 ⧗ 2 - Suave is a simple web development F# library providing a lightweight web server and a set of combinators to manipulate route flow and task composition. [Apache 2.0]
- WebSharper ★ 270 ⧗ 7 - F#-based web programming platform including a compiler from F# code to JavaScript. [Apache 2.0]
.Net Core Templates
- ASP.NET Core WebAPI F# Template
dotnet new -i WebAPI.FSharp.Template::*
- Expecto Template
dotnet new -i Expecto.Template::*
- Fable, F# |> Babel
dotnet new -i Fable.Template::*
- Fable-elmish
dotnet new -i Fable.Template.Elmish.React::*
- Freya
dotnet new --install Freya.Template::*
- Giraffe Template (Quick install:
dotnet new -i "giraffe-template::*"
) - MiniScaffold
- F# Template for creating and publishing libraries targeting .NET Full (net45) and Core (netstandard1.6)
dotnet new -i MiniScaffold::*
- NancyFx Template
dotnet new -i NancyFx.Core.Template::*
- SAFE Stack Template
dotnet new -i SAFE.Template::*
- vbfox's F# Templates
- F# Template for creating github project with appveyor and travis support
Resources
Blogs
Books
Cheatsheets
Community
Other Lists
- Awesome .NET! ★ 4458 ⧗ 2 - Collection of awesome .NET libraries, tools, frameworks and software. [CC0 1.0]
- Awesome Fable - Curated list of useful Fable tutorials, libraries and software. [CC0 1.0]
- F# Community Projects - FSharp community projects
- F# for fun and profit
- WTF# - podcast focused on F# and its ecosystem
Websites
- Community for F# - Links to dojos and recordings of community presentations.
- cs2fs - Transform C# code to F# code
- Decompiler.com - Online C#/VB/F# decompiler
- DotNetFiddle - Online REPL
- F# Core Engineering
- F# for Fun and Profit - Reference tutorials
- F# Software Foundation - Main website
- fantomas-tools - A set of Fantomas related tools like AST viewer and online bug reporter.
- SharpLab - C#/VB/F# compiler playground.
- Try F# - Online tutorials, currently without execution of code due to Silverlight dependency
Videos
- Austin F# Meetup Group Recorded Presentations
- Intro to F#
- Fast Dictionary in F#
- F# Chats on performance
- Topological Sort