Awesome F#

Awesome Join the chat at https://gitter.im/VPashkov/awesome-fsharp

A curated list of awesome F# frameworks, libraries, software and resources.

Table of Contents

Actor frameworks

  • Akka.NET3k 969 - Community-driven port of the popular Java/Scala framework Akka to .NET. [Apache 2.0]
  • Akkling65 20 - F# typed API for Akka.NET. [Apache 2.0]
  • Cricket94 15 - Actor framework for F#. [Unlicense]
  • Orleankka123 22 - Functional API for Orleans Framework. [Apache 2.0]
  • Orleans4k 1k - Distributed Virtual Actor Model. [MIT]

Concurrent, asynchronous and parallel programming

  • FSharp.Control.AsyncSeq41 30 - Collection of asynchronous programming utilities for F#. [Apache 2.0]
  • FSharpx.Async41 17 - Collection of asynchronous programming utilities for F#. [Apache 2.0]
  • Giraffe.Tasks - task computation expression to work natively with .NET's Tasks from an F# application. [Apache 2.0]
  • Hopac484 89 - Concurrent ML style concurrent programming library for F#. [MIT]
  • TaskBuilder.fs3 1 - F# computation expression builder for System.Threading.Tasks. [CC0]

General purpose libraries

  • Aether77 19 - Optics library for F#, similar to the Haskell Data.Lens package. [MIT]
  • Chessie100 46 - Railway-oriented programming. [Unlicense]
  • ExtCore45 10 - Extended core library for F#. [Apache 2.0]
  • FSharpLu151 16 - Lightweight utilities for string manipulations, logging, collection data structures, file operations, text processing, security, async, parsing, diagnostics, configuration files and Json serialization. [MIT]
  • FSharpPlus250 43 - Extensions for F#. [Apache 2.0]
  • TypeShape90 15 - Small, extensible F# library for practical generic programming. [MIT]

Build tools

  • FAKE913 678 - "F# Make" is a cross platform build automation system. [Apache 2.0]
  • Xake14 2 - Another MAKE utility implementation on F#, fully declarative with no-brain parallelism, inspired by Shake. [MIT]

Compilers

  • F# Compiler Services190 122 - The F# Compiler, F# Interactive scripting engine and F# editing services as a component library. [Apache 2.0]
  • Fable859 158 - F# to JavaScript Compiler. [Apache 2.0]
  • FSharp2k 409 - The Open Edition of the F# compiler, core library and tools. [Apache 2.0]
  • FunScript305 71 - F# to JavaScript compiler with JQuery etc. mappings through a TypeScript type provider. [Apache-2.0]
  • Fez45 2 - F# to Erlang compiler. [MIT]
  • Juniper56 1 - Functional Reactive Programming for the Arduino and other microcontrollers. [MIT]
  • Pengines.Client - sandboxed Prolog environment. [BSD-2-Clause]
  • Visual F#1k 453 - The Visual F# compiler and tools. [Apache 2.0]

Configuration

  • Argu71 23 - Declarative CLI argument/XML configuration parser for F# applications. [MIT]
  • FsConfig - F# library for reading configuration data from environment variables and AppSettings with type safety. [Unlicense]

Data Science

  • Deedle380 114 - 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]
  • DiffSharp98 19 - DiffSharp is a functional automatic differentiation (AD) library. [GPL-3.0]
  • FsLab67 24 - FsLab is a collection of libraries for data-science. It provides a rapid development envi­ronment that lets you write advanced analysis with few lines of production-quality code. [Apache 2.0]
  • Math.NET1k 574 - Math.NET Numerics aims to provide methods and algorithms for numerical computations in science, engineering and every day use. F# specific bindings available. [MIT]
  • SIMDArray37 9 - SIMD enhanced Array extensions for faster computation. [MIT]

Type providers

  • ApiaryProvider6 4 - Type provider for Apiary.io. [Apache 2.0]
  • AzureStorageTypeProvider37 21 - 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 - Type provider for COM interop. [Unilicense]
  • DynamicsCRMProvider - Type provider for Microsoft Dynamics CRM 2011. [Apache 2.0]
  • ExcelProvider53 35 - Excel type provider. [Unilicense]
  • FSharp.Configuration71 53 - The project contains type providers for the configuration of .NET projects. Handles AppSettings, ResX, Yaml and Ini files. [Apache 2.0]
  • FSharp.Data449 267 - Data science library that contains type providers for CSV, HTML, JSON, XML, and WorldBank data. [Apache 2.0]
  • FSharp.Data.DbPedia3 1 - F# type provider for DBpedia. [Unilicense]
  • FSharp.Data.HiveProvider9 7 - Demonstrator F# type provider for Apache Hive. [Apache 2.0]
  • FSharp.Data.Npgsql - F# type providers library on a top of well-known Npgsql ADO.NET client library. [Apache 2.0]
  • FSharp.Data.SqlClient137 51 - F# Type Provider for statically typed access to T-SQL command parameters and result set. [Apache 2.0]
  • FSharp.Data.Toolbox40 45 - 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.TypeProviders11 7 - Library that contains type providers for .edmx files, .dbml files, WSLD services, OData services, and SQL databases. [Unilicense]
  • FSharp.Management62 27 - 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.RegexProvider16 6 - Type provider for regular expressions. [Apache 2.0]
  • FsYaml33 7 - Typed Yaml library for F#. [NYSL Version 0.9982]
  • GraphProvider14 2 - .dgml state machine type provider. [Apache 2.0]
  • MatDataProvider3 1 - Erased type provider for .mat files (binary MATLAB format files). [Apache 2.0]
  • R Type Provider179 69 - Type provider to interop with R. [BSD-2-Clause]
  • Rezoom.SQL211 4 - Statically typed SQL for F#. [MIT]
  • S3Provider9 1 - Experimental type provider for Amazon S3. [MIT]
  • SQLProvider253 129 - General F# SQL database erasing type provider, supporting LINQ queries, schema exploration, individuals, CRUD operations and much more besides. [Apache 2.0]
  • SwaggerProvider57 15 - F# generative Type Provider for Swagger. [Unilicense]

Creating type providers

Development Tools

IDE

  • 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]
  • Xamarin Studio - Advanced IDE for iOS & Android. [Proprietary]
  • Jetbrains Rider - Cross-Platform .Net IDE with F# support. [Proprietary]

Editor plugins

  • F# Bindings365 145 - Archive of F# Language Bindings for Open Editors. [Apache 2.0]
  • Fantomas134 42 - F# code formatter. [Apache 2.0]
  • FSharpFar35 8 - 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#77 34 - F# support for Vim. [MIT]
  • VimSpeak253 18 - VimSpeak lets you control Vim with your voice using speech recognition. [MIT]
  • Visual F# Power Tools350 127 - Power commands for F# in Visual Studio. [Apache 2.0]

Game development

  • FsUnity - F# Libraries, Tools, and Plugins for the Unity3d Game Engine. [Unilicense]
  • Nu Game Engine189 28 - Cross-platform F# 2D game engine built in the functional style. Uses SDL2 and Farseer Physics. [MIT]

Logging

  • Logary286 66 - 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]
  • Paket1k 505 - Dependency manager for .NET with support for NuGet packages and Git repositories. [MIT]

Serialization

  • FsPickler45 15 - Fast, multi-format messaging serializer for .NET. [MIT]

Parsing

  • FParsec57 8 - FParsec is a parser combinator library for F#. [BSD-2-Clause]
  • FsAttoparsec - Port of Bryan O'Sullivan's attoparsec from Haskell to F#. [BSD-3-Clause]
  • XParsec23 3 - Extensible, type-and-source-polymorphic, non-linear applicative parser combinator library for F# 3.0 and 4.0. [BSD-3-Clause]

Testing

  • canopy344 114 - F# web automation and testing framework. [MIT]
  • Expecto200 42 - Smooth testing framework for F# with tests-as-values and parallelism by default. [Apache 2.0]
  • FsCheck380 113 - Random Testing for .NET. [BSD-3-Clause]
  • fsharp-hedgehog109 11 - Property-based testing system for F#. [Apache 2.0]
  • FsUnit217 69 - FsUnit makes unit-testing with F# more enjoyable. It adds a special syntax to your favorite .NET testing framework. [???]
  • Persimmon36 7 - Unit test framework for F# using computation expressions. [MIT]
  • unquote - 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]

Web frameworks

  • Freya - Modern, purely functional stack for web programming in F#. [Apache 2.0]
  • Genit64 13 - Cross-platform website generator and server using F#, Suave and PostgreSQL or MS SQL Server.
  • Giraffe44 10 - Native functional ASP.NET Core web framework for F# developers. [Apache 2.0]
  • Saturn - Opinionated, web development framework for F# which implements the server-side, functional MVC pattern. [MIT]
  • Suave968 244 - 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]
  • WebSharper324 43 - F#-based web programming platform including a compiler from F# code to JavaScript. [Apache 2.0]

Search

  • FlexSearch - high performance REST/SOAP services based full-text searching platform built on top of the popular Lucene search library. [Apache 2.0]

.Net Core Templates

Resources

Blogs

Cheatsheets

Community

Other Lists

Websites