BV.Functional
1.0.10
dotnet add package BV.Functional --version 1.0.10
NuGet\Install-Package BV.Functional -Version 1.0.10
<PackageReference Include="BV.Functional" Version="1.0.10" />
paket add BV.Functional --version 1.0.10
#r "nuget: BV.Functional, 1.0.10"
// Install BV.Functional as a Cake Addin
#addin nuget:?package=BV.Functional&version=1.0.10
// Install BV.Functional as a Cake Tool
#tool nuget:?package=BV.Functional&version=1.0.10
BV.Functional
This library is ment to provide standard basic constructs for functional programming.
Option<TPayload>
Example usage would be: you have a method returning a value or "nothing" (null
). If you forget to handle the "nothing" case in you code, you will get the NullReferenceException
(the most thrown exception ever). You can help yourself and pack your result into an Option<TResult>.
public Option<string> GetSomeStringOption(bool isSet)
{
if (isSet)
return Option.Some("My payload string ");
return Option.None;
}
If you try to return null
in the method, you will get an exception.
You can then consume the method and do something with returned option like here:
var myOption = GetSomeStringOption(true);
myOption.Match(
(payload) => Console.WriteLine(payload),
() => Console.WriteLine("Sorry - payload not set"));
The Match-method executes only the payload action if payload is set. If it is not set only the "not set" action will be executed.
There are also some useful extension methods for the Option<TPayload>.
Option extensions
Map
Transform an Option from Option of one Type to Option of another Type:
Option<TTransformed> Option<TPayload>.Map<TPayload, TTransformed>(Func<TPayload, TTransformed> f)
Bind
Bind extension allows you to bind methods together.
OptionOrErrors<TPayload>
Either<TLeft, TRight>
Post-word
The other functional types are constructed analogical to Option
. Explore the library in object browser to get them.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.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.
Added: Either, OptionOrErrors.