/FSharp.Core.Extended

A drop-in replacement for F# core library with generally faster defaults

Primary LanguageF#MIT LicenseMIT

NuGet version (FSharp.Core.Extended)

What

Warning

This library is very much work in progress, expect issues.

This library tries to be a drop-in replacement for the FSharp.Core with functions, which are generally faster and more flexible than built-in ones, but may be backwards-incompatible at runtime/compile-time.

Examples of current (and future planned) backwards-incompatibilities:

  • Some collections functions (min, max, sum, etc) can handle things like NaN differently than FSharp.Core.
  • All try* functions return ValueOption<'T>.
  • Option<'T> is aliasing ValueOption<'T>, all Option module functions shadowing the ones from FSharp.Core, several helper functions/methods provided to convert back and from the FSharp.Core.Option<'T>.
  • ...

Hot to use:

This library being a drop-in replacement doesn't mean that just referencing its NuGet package is enough. Shadowing is achieved by opening this library's namespace (works on any granularity), for example:

open FSharp.Core.Extended

will shadow every module and type defined in this library (e.g. Option type, Option module, Array module, List module, etc)

open FSharp.Core.Extended.Collections

will shadow every module and type defined for collections

open FSharp.Core.Extended.Collections.Array

will shadow every type and module defined for arrays

And so on.