F# (F sharp) is a strongly typed, multi-paradigm programming language that encompasses functional, imperative, and object-oriented programming methods.
- F# is a member of the ML language family and originated as a .NET Framework implementation of a core of the programming language OCaml.
- It has also been influenced by C#, Python, Haskell, Scala, and Erlang.
F# is used in a wide range of application areas and is supported by both an active open community and industry-leading companies providing professional tools. There are a lot of libraries available which can enhance, extend, and improve the functionality of F# and the user can quickly add any of these libraries as per their requirements.
In this article, we will discuss the top 10 F# libraries, or you can say the most useful libraries which are used in 2017.
1. FSharp.Data By tomasp
The F# Data library implements everything you need to access data in your F# applications and scripts. It contains F# type providers for working with structured file formats (CSV, HTML, JSON, and XML) and for accessing the WorldBank data. It also includes helpers for parsing CSV, HTML and JSON files and for sending HTTP requests.
This library focuses on providing a simple, mostly read-only, access to the structured documents and other data sources.
For further details, you can visit http://fsharp.github.io/FSharp.Data/
2. FSharp.Compiler.Service By enricosada & tomasp
- The F# compiler services package contains a custom build of the F# compiler that exposes additional functionality for implementing F# language bindings, additional tools based on the compiler or refactoring tools.
- The package also includes F# interactive service that can be used for embedding F# scripting into your applications.
For further details, you can visit https://github.com/fsharp/FSharp.Compiler.Service
3. FSharp.Compiler.Tools By sforkmann & enricosada
The main day-to-day purpose of this repository is to deliver extra packagings of the F# compiler, core library and core tools for use in different settings. This repo accepts direct contributions related to the cross-platform packaging of F#.
This repo mirrors the core implementation of the F# language from the upstream repository. This arrangement ensures that versions do not diverge, and that very extensive QA is done on all core contributions.
For further details, you can visit https://github.com/fsharp/fsharp
- The package is a collection of libraries that can be used for literate programming with F# (great for building documentation) and for generating library documentation from inline code comments.
- The key componments are Markdown parser, tools for formatting F# code snippets, including tool tip type information and a tool for generating documentation from library metadata.
For further details, you can visit https://github.com/fsprojects/FSharp.Formatting
5. Expecto By fsgit
Expecto is a smooth testing library for F#, with APIs made for humans, giving strong testing methodologies to everyone.
- With Expecto you write tests as values. Tests can be composed, reduced, filtered, repeated and passed as values.
- This gives the programmer a lot of leverage when writing tests.
Expecto comes with batteries included, but it's still open for extension due to its compositional model.
For further details, you can visit https://github.com/haf/expecto
6. FsPickler By eirik
FsPickler is a serialization library that facilitates the distribution of .NET objects.
- The implementation focuses on performance and completeness in supported types, including F# types.
- It supports multiple, pluggable serialization formats including Binary, Xml, JSON and BSON.
- The library is based on the functional programming concept of pickler combinators which has been adapted to accommodate the object oriented nature of the .NET framework.
For further details, you can visit http://mbraceproject.github.io/FsPickler/
7. FSharp.Data.SqlClient By dsevastianov
- SqlCommandProvider provides statically typed access to input parameters and result set of T-SQL command in idiomatic F# way.
- SqlProgrammabilityProvider exposes Stored Procedures, User-Defined Types and User-Defined Functions in F# code.
For further details, you can visit http://fsprojects.github.io/FSharp.Data.SqlClient/
8. FsUnit By anmohl
FsUnit is a set of libraries that makes unit-testing with F# more enjoyable. It adds a special syntax to your favorite .NET testing framework. FsUnit currently supports NUnit, MbUnit, xUnit, and MsTest.
The goals of FsUnit are:
- To make unit-testing feel more at home in F# , i.e., more functional.
- To leverage existing test frameworks while at the same time adapting them to the F# language in new ways.
For further details, you can visit http://fsprojects.github.io/FsUnit/
9. MathNet.Numerics.FSharp By mathnet >
- Math.NET Numerics is the numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use.
- Math.NET Numerics is part of the Math.NET initiative and is the result of merging dnAnalytics with Math.NET Iridium, replacing both.
For further details, you can visit https://numerics.mathdotnet.com/
10. FSharp.Charting By tomasp
The F# Charting library is a compositional library for creating charts from F# on Windows. Use FSharp.Charting.Gtk for other platforms.
- FSharp.Charting is designed to be a great fit for data scripting in F# Interactive, but charts can also be embedded in Windows applications.
- The library is a wrapper for .NET Chart Controls, which are only supported on Windows.
For further details, you can visit https://fslab.org/FSharp.Charting/