Awesome F#

F# is a programming language with focus on immutability, type
inference, first-class functions, powerful data types and pattern
matching, targeting .NET and other platforms.
This is a curated list of awesome F# frameworks, libraries, software
and resources.
Contents
Main Language-Related
Repositories
F# Wrappers for Popular
.NET Libraries
Looking to have a more enjoyable experience when consuming a popular
.NET library? Here is a quick table.
Actor Frameworks
- Akka.NET -
Community-driven port of the popular Java/Scala framework Akka to
.NET.
- Akkling - F#
typed API for Akka.NET.
- Orleankka
- Functional extension for Microsoft Orleans framework.
- Orleans -
Distributed virtual actor model.
- Proto.actor -
Cross-platform actor framework for .NET, Go, Java and Kotlin.
- FAKE - “F# Make” is a
cross platform build automation system.
- Xake - Another Make
utility implementation on F#, fully declarative with no-brain
parallelism, inspired by Shake.
Cloud
- Chia - Chia is
a F# library which contains HelperFunctions for reporting, logging and
Azure cloud operations.
- Farmer -
Repeatable Azure deployments with ARM templates made easy.
- FsFirestore -
Functional F# library to access Firestore database hosted on Google
Cloud Platform (GCP) or Firebase.
- Pulumi.FSharp.Extensions
- F# computational expressions to reduce boilerplate in Pulumi
code.
Code Generation
- Hawaii - A dotnet
CLI tool to generate type-safe F# clients from OpenAPI/Swagger
services.
- Myriad -
Myriad is a pre-compilation code generator.
- Fable - F# to
JavaScript compiler.
- Fez - F# to Erlang
compiler.
- FunScript - F#
to JavaScript compiler with JQuery etc. mappings through a TypeScript
type provider.
- Juniper - Functional
Reactive Programming for the Arduino and other microcontrollers.
Concurrent,
Asynchronous, and Parallel Programming
- FIO - A type-safe, highly
concurrent and asynchronous library for F# based on pure functional
programming.
- FSharp.Control.AsyncSeq
- Asynchronous sequence support, integration with
IAsyncEnumerable.
- FSharp.Control.FusionTasks
- F# Async workflow <–> .NET Task/ValueTask easy seamless
interoperability library.
- FSharpx.Async -
Collection of asynchronous programming utilities for F#.
- Hopac - Concurrent ML
style concurrent programming library for F#.
- IcedTasks -
Cold tasks, cancellable tasks, and extensions for the
async
workflow.
- Ply - High performance
System.Threading.(Value)Task computation expressions for F#.
- Reaction.AsyncRx
- An implementation of Async Observables in F# for .NET and Fable.
- TaskBuilder.fs - F#
computation expression builder for System.Threading.Tasks.
Configuration
- Argu - Declarative
CLI argument/XML configuration parser for F# applications.
- FsConfig - F#
library for reading configuration data from environment variables and
AppSettings with type safety.
- Skid - Simple,
single-file portable CLI utility for configuration templating.
- docopt.fs -
Command line arguments parser, F# port of docopt.
Data Science
- Deedle -
Exploratory data library for .NET.
- DiffSharp -
Functional automatic differentiation (AD) library.
- FsLab - 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.
- IfSharp - F# for
Jupyter Notebooks.
- Math.NET
Numerics - Methods and algorithms for numerical computations in
science, engineering and every day use. F# specific bindings
available.
- Math.NET
Symbolics - A basic open source computer algebra library for .NET,
Silverlight and Mono written entirely in F#.
- SIMDArray - SIMD
enhanced Array extensions for faster computation.
- Synapses -
Neural network library in F#.
- m2cgen - A
CLI tool to transpile trained classic ML models into a native F# code
with zero dependencies.
IDE
- F#
Playground - Minimal playground for F#.
- JetBrains Rider -
Cross-platform .NET IDE with F# support (Proprietary, free for
non-commercial use).
- MonoDevelop -
Cross-platform IDE mostly aimed at Mono/.NET developers.
- Visual Studio - IDE from
Microsoft with first class F# support (Windows only, Proprietary).
Editor Plugins
- Emacs F#
mode - F# support in Emacs (including Intellisense and Interactive
mode).
- FSharpFar - F#
support for Far Manager.
- FSharpLint -
F# code linter.
- Fantomas - F#
code formatter.
- Ionide - Atom Editor and Visual
Studio Code package suite for cross platform F# development.
- Vim F# - F#
support for Vim.
- VimSpeak -
VimSpeak lets you control Vim with your voice using speech
recognition.
- fsharp-notebook
- Data science notebook for F# Interactive.
- neofsharp.vim -
Basic F# support for (Neo)Vim.
- fasm - F# JIT
disassembler, as a dotnet tool.
General Purpose Libraries
- Aether - Optics
library for F#, similar to the Haskell Data.Lens package.
- Chessie -
Railway-oriented programming.
- Donald - A
simple F# interface for ADO.NET.
- DustyTables -
Thin F# API for SqlClient for easy data access to ms sql server with
functional seasoning on top.
- ExtCore -
Extended core library for F#.
- FSharp.CosmosDb
- An F# wrapper around the CosmosDB SDK, making it more
functional-friendly.
- FSharp.HashCollections
- Fast hash-based immutable map and set.
- FSharpLu -
Lightweight utilities for string manipulations, logging, collection data
structures, file operations, text processing, security, async, parsing,
diagnostics, configuration files and Json serialization.
- FSharpPlus -
Extensions for F#.
- FSharpx.Extras -
FSharpx.Extras is a collection of libraries and tools for use with
F#.
- Fli - Computational
expression to run system processes and manage their output.
- Fling - Fling
significantly reduces boilerplate needed to efficiently save/load
complex domain entities to/from multiple tables.
- FsToolkit.ErrorHandling
- Clear, simple and powerful error handling with railway-oriented
programming. Inspired by Chessie.
- Fumble - Thin F#
API for Sqlite for easy data access to sqlite database with functional
seasoning on top.
- LiteDB.FSharp - F#
Support for LiteDB, an
embedded single file database for .NET.
- Npgsql.FSharp -
Thin F# wrapper around Npgsql, the PostgreSQL
database driver.
- TypeShape
- Small, extensible F# library for practical generic programming.
- 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).
Game Development
- FsUnity - F# libraries,
tools, and plugins for the Unity game engine.
- Garnet -
Lightweight game composition library for F# with entity-component-system
(ECS) and actor-like messaging features.
- Godot -
Tutorial how to use F# with Godot.
- Nu Game Engine -
Cross-platform F# 2D game engine built in the functional style. Uses
SDL2 and Farseer Physics.
GUI
- Avalonia.FuncUI
- Develop cross-platform MVU GUI Applications using F# and
Avalonia.
- Elmish.WPF -
Elmish (or MVU) approach to WPF programming.
- Epoxy - An independent
flexible XAML MVVM library for .NET.
- Fabulous - F#
functional app development, using declarative dynamic UI.
HTTP Clients
- FsHttp - A
convenient library for consuming HTTP/REST endpoints via F#.
- Http.fs - A simple,
functional HTTP client library for F#.
- Oryx - A high
performance .NET cross-platform functional HTTP request handler library
for writing HTTP clients and orchestrating web requests.
Logging
- FsLibLog - A
single file you can copy and paste or add through Paket GitHub
dependencies to provide your F# library with a logging abstraction.
- Logary - High
performance, multi-target logging, metric, tracing and health-check
library for mono and .NET.
Package Management
- NuGet - The package manager for
the Microsoft development platform including .NET.
- Paket - Dependency
manager for .NET with support for NuGet packages and Git
repositories.
Parsing
- FParsec -
The parser combinator library for F#.
- FsAttoparsec -
Port of Bryan O’Sullivan’s attoparsec from Haskell to F#.
- XParsec -
Extensible, type-and-source-polymorphic, non-linear applicative parser
combinator library for F# 3.0 and 4.0.
Serialization
- FSharp.Json -
Reflection-based serialization library.
- FSharp.SystemTextJson
- System.Text.Json extensions for F# types.
- Fleece - JSON mapper
for F#. It simplifies mapping from a Json library’s JsonValue onto your
types, and mapping from your types onto JsonValue.
- FsCodec - F#
Event-Union Contract Encoding with versioning tolerant converters.
- FsPickler -
Fast, multi-format messaging serializer for .NET.
- Legivel - F# Yaml
1.2 parser.
- Thoth.Json -
JSON encoder/decoder library inspired by Elm.
Simulation
Static Site Generators
Testing
- Expecto - Smooth
testing framework for F# with tests-as-values and parallelism by
default.
- Faqt - Fantastic
fluent assertions for your F# tests and domain code.
- FsCheck - Random
testing for .NET.
- FsUnit - FsUnit
makes unit-testing with F# more enjoyable. It adds a special syntax to
your favorite .NET testing framework.
- NBomber -
Simple load testing framework for Pull and Push scenarios.
- Persimmon -
Unit test framework for F# using computation expressions.
- altcover -
Cross-platform coverage gathering and processing tool set for .NET/.NET
core and Mono.
- canopy - F#
web automation and testing framework.
- fsharp-hedgehog
- Property-based testing system for F#.
- unquote -
Write F# unit test assertions as quoted expressions.
- xUnit.net - Free, open source,
community-focused unit testing tool for the .NET Framework.
Type Providers
- AzureStorageTypeProvider
- F# Azure type provider which can be used to explore Blob, Table and
Queue Azure Storage assets and easily apply CRUD operations on
them.
- DynamicsCRMProvider
- Type provider for Microsoft Dynamics CRM 2011.
- EasyBuild.FileSystemProvider
- Type provider to provide a typed representation of files and
directories based on your project structure or a virtual file
system.
- ExcelProvider -
Excel type provider.
- FSharp.Configuration
- The project contains type providers for the configuration of .NET
projects. Handles AppSettings, ResX, Yaml and Ini files.
- FSharp.Data.Npgsql
- F# type providers library on a top of well-known Npgsql ADO.NET client
library.
- FSharp.Data.SqlClient
- F# type provider for statically typed access to T-SQL command
parameters and result set.
- FSharp.Data.Tdms
- TDMS support for F#.
- FSharp.Data.Toolbox
- 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.
- FSharp.Data.TypeProviders
- Library that contains type providers for
.edmx files,
.dbml files, WSDL services, OData services, and SQL
databases.
- FSharp.Data -
Data science library that contains type providers for CSV, HTML, JSON,
XML, and WorldBank data.
- FSharp.Management
- The project contains various type providers for the management of the
machine. Handles file system, registry, Windows Management
Instrumentation, PowerShell and SystemTimeZones.
- FSharp.Text.RegexProvider
- Type provider for regular expressions.
- Facil - Facil
generates F# data access source code from SQL queries and stored
procedures.
- FsXaml - F# Tools
for working with XAML Projects.
- FsYaml - Typed
Yaml library for F#.
- GraphProvider -
.dgml state machine type provider.
- MatDataProvider -
Erased type provider for
.mat files (binary MATLAB format
files).
- R
Type Provider - Type provider to interop with R.
- Rezoom.SQL -
Statically typed SQL for F#.
- S3Provider -
Experimental type provider for Amazon S3.
- SQLProvider
- General F# SQL database erasing type provider, supporting LINQ
queries, schema exploration, individuals, CRUD operations and much more
besides.
- SwaggerProvider
- Generative type provider for Swagger.
Creating Type Providers
Visualization
- FSharp.Charting -
Charting library suitable for interactive F# scripting.
- GG.Net -
Visualization library for data scientists.
- Plotly.NET - A
Plotly-based general purpose plotting library for F#.
- SharpVG -
Create SVG vector graphics in F#.
- XPlot - A plotting
library for the F# programming language.
Web Frameworks
- Bolero - F# in
WebAssembly, develop SPAs with the full power of F# and .NET
Blazor.
- 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.
- Feliz - A fresh
retake of the React API in Fable and a collection of high-quality
components to build React applications in F#.
- Genit -
Cross-platform website generator and server using F#, Suave and
PostgreSQL or MS SQL Server.
- Giraffe -
Native functional ASP.NET Core web framework for F# developers.
- Oxpecker - ASP.NET
Core based F# framework + supporting tools (ViewEngine, Htmx,
OpenApi).
- Saturn -
Opinionated, web development framework for F# which implements the
server-side, functional MVC pattern.
- Suave - 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.
- WebSharper -
F#-based web programming platform including a compiler from F# code to
JavaScript.
.NET Core Templates
Resources
Blogs
Books
Cheatsheets
Other Lists
- Awesome .NET!
- Collection of awesome .NET libraries, tools, frameworks and
software.
- F# Community
Projects - Everything produced by the F# community.
- FSharpest - A directory to
discover F# tools, libraries and resources.
- Fable Resources - A
curated list of useful Fable-related tutorials, libraries and
software.
Websites
Videos
Courses
fsharp.md
Github