ImTools 4.0.0

.NET Standard 2.0 .NET Framework 4.5

Requires NuGet 3.3.0 or higher.

Install-Package ImTools -Version 4.0.0
dotnet add package ImTools --version 4.0.0
<PackageReference Include="ImTools" Version="4.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ImTools --version 4.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ImTools, 4.0.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install ImTools as a Cake Addin
#addin nuget:?package=ImTools&version=4.0.0

// Install ImTools as a Cake Tool
#tool nuget:?package=ImTools&version=4.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Immutable persistent collections, algebraic sum-type aka descriminated union, Ref type and supportive extensions for performant functional programming in C#.
       Split from the DryIoc: https://github.com/dadhi/DryIoc

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.5

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.0.0 57 7/25/2022
3.1.0 321 5/10/2021
3.0.0 748 3/24/2021
2.1.0 540 6/28/2020
2.0.0 408 1/24/2020
2.0.0-preview-01 359 12/18/2019
1.0.0 3,572 9/30/2017
1.0.0-preview-05 807 6/19/2017
1.0.0-preview-04 715 6/19/2017
1.0.0-preview-03 714 4/4/2017
1.0.0-preview-02 708 3/29/2017
1.0.0-preview-01 707 3/3/2017

## v4.0.0 Major release

### Breaking changes

`ImMap<V>` type is replaced by `ImHashMap<int, V>`.
The implementations of ImMap and ImHashMap are combined into one, reducing the code size, and using all performance optimizations from the both.
This change will simplify further performance improvements, testing and bug-fixes.

I have tried to keep the API as similar as possible,
but you may expect that some types and methods were renamed, or new overloads were added.

### Performance and memory improvements

- Fewer allocations (~10%), see the benchmarks in project readme
- Keeping the performance almost the same

### Closed issues

- #41 Add a builder-like capability to the ImHashMap via BuildFromDifferent methods
- #47 Add output of the ImHashMap as mermaid diagram, e.g. `ToMermaidString` method
- #48 Merge the ImMap and ImHashMap implementations
- #50 Optimize Enumerable for the PartitionedHashMap
- #51 Reduce ImHashMap memory allocations, keeping the speed
- #52 Add AddSureNotPresent methods to compensate for GetSurePresent methods