Funcky.Xunit
0.1.0
See the version list below for details.
dotnet add package Funcky.Xunit --version 0.1.0
NuGet\Install-Package Funcky.Xunit -Version 0.1.0
<PackageReference Include="Funcky.Xunit" Version="0.1.0" />
paket add Funcky.Xunit --version 0.1.0
#r "nuget: Funcky.Xunit, 0.1.0"
// Install Funcky.Xunit as a Cake Addin #addin nuget:?package=Funcky.Xunit&version=0.1.0 // Install Funcky.Xunit as a Cake Tool #tool nuget:?package=Funcky.Xunit&version=0.1.0
Funcky
Funcky is a functional Library for C# which encourages correct usage of the functional programming paradigm.
Functional programming is the oldest of the three major programming paradigms, none the less it is the last which gets wide spread usage. Even in languages like C++, Java or C# we want to functional style of programming.
Linq is the first Monad which got wide spread use in C#, and most C# programmers were not even aware of it beeing a monad, which probably helped.
Mark Seemann points out that "Unfortunately, Maybe implementations often come with an API that enables you to ask a Maybe object if it's populated or empty, and a way to extract the value from the Maybe container. This misleads many programmers [...]"
https://blog.ploeh.dk/2019/02/04/how-to-get-the-value-out-of-the-monad/
This library is based on his example code, and should grow slowly to a library which helps to use and understand the Functional programming paradigm. Functional programming is side-effect free and the strong type system can be used to make illegal state impossible.
Use functional programming as an additional asset to write correct code.
Option Monad
An Option<T> can either hold a value of T (Some) or it holds Nothing (None)
Create something
var something = Option.Some(1337);
Create nothing
var nothing = Option<int>.None();
Select
Option<bool> maybeBool =
from m in maybe
select m == 1337;
Select Many
var result = from number in someNumber
from date in someDate
select Tuple.Create(number, date);
Match
bool isSome = maybe.Match(
none: false,
some: m => true
);
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 is compatible. |
.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
- Funcky (>= 2.0.0)
- xunit.assert (>= 2.4.0)
-
.NETStandard 2.1
- Funcky (>= 2.0.0)
- xunit.assert (>= 2.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.