ExtCore is an extended core library for F#. ExtCore is designed to the same coding guidelines and quality standards as the F# core library (FSharp.Core), so the API is simple and intuitive to use.
ExtCore does not aim to be a "batteries-included" library; instead, ExtCore functionality is concentrated into a few key areas:
Top-level operators, functions, and modules providing common functionality. For example, the
notImploperator can be used to raise a
System.NotImplementedExceptioninstead of the less-specific
failwith, and the
Optionmodule provides additional functions for working with the
'T optiontype to complement those available in FSharp.Core's
Immutable data structures. Some of these are drop-in (almost) replacements for the
Settypes in FSharp.Core which provide improved performance in specific scenarios (e.g.,
HashMap). Others provide unique functionality to help tackle specific coding tasks (e.g.,
Computation expressions (a.k.a. "workflows" or "monads") aimed at simplifying the implementation of common functional programming patterns. For example, ExtCore provides an
asyncMaybeworkflow which is similar to
asyncin FSharp.Core but includes additional logic to handle cases where a computation encounters an error or fails to return a valid result.
Modules which mirror the built-in collections modules in FSharp.Core like
Map, but whose functions are designed to work with the computation expressions included in ExtCore. For example, you might have some code that uses the
Array.mapfunction; if your mapping function can sometimes fail, you can use the
Choice.Array.mapfunction instead to gracefully handle the error instead of raising an exception.
Known bugs or other issues are listed on the ExtCore issues page.
ExtCore is licensed under the terms of the Apache 2.0 license.