ExtCore
ExtCore copied to clipboard
An extended core library for F#.
======= ExtCore
.. image:: https://travis-ci.org/jack-pappas/ExtCore.png
:target: https://travis-ci.org/jack-pappas/ExtCore
.. image:: http://img.shields.io/nuget/v/ExtCore.svg :target: https://nuget.org/packages/ExtCore/
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:
-
Pervasives
Top-level operators, functions, and modules providing common functionality. For example, the
notImploperator can be used to raise aSystem.NotImplementedExceptioninstead of the less-specificfailwith, and theOptionmodule provides additional functions for working with the'T optiontype to complement those available in FSharp.Core'sOptionmodule. -
Collections
Immutable data structures. Some of these are drop-in (almost) replacements for the
MapandSettypes 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.,LazyListandLruCache). -
Control
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 toasyncin FSharp.Core but includes additional logic to handle cases where a computation encounters an error or fails to return a valid result. -
Control.Collections
Modules which mirror the built-in collections modules in FSharp.Core like
ArrayorMap, but whose functions are designed to work with the computation expressions included in ExtCore. For example, you might have some code that uses theArray.mapfunction; if your mapping function can sometimes fail, you can use theChoice.Array.mapfunction instead to gracefully handle the error instead of raising an exception.
Known Bugs/Issues
Known bugs or other issues are listed on the ExtCore issues_ page.
.. _ExtCore issues: https://github.com/jack-pappas/ExtCore/issues
Licensing
ExtCore is licensed under the terms of the Apache 2.0 license_.
.. _Apache 2.0 license: https://www.apache.org/licenses/LICENSE-2.0.html