Init Scripts in new repo

This commit is contained in:
2026-04-04 13:18:04 -04:00
commit d988008613
26 changed files with 1497 additions and 0 deletions

38
Functional/Right.cs Normal file
View File

@@ -0,0 +1,38 @@
namespace SJK.Functional;
public sealed class Right<TLeft, TRight> : IEither<TLeft, TRight>
{
private readonly TRight _value;
public Right(TRight value){
this._value = value;
}
public (TLeft?, TRight?) Deconstruct()=>(default(TLeft),_value);
public IEither<TNewLeft, TRight> MapLeft<TNewLeft>(Func<TLeft, TNewLeft> mapping)
=> new Right<TNewLeft,TRight>(this._value);
public IEither<TLeft, TNewRight> MapRight<TNewRight>(Func<TRight, TNewRight> mapping)
=> new Right<TLeft,TNewRight>(mapping(this._value));
public TLeft Reduce(Func<TRight, TLeft> mapping)=> mapping(this._value);
public override string ToString()
{
return $"Right<{typeof(TRight).Name}> with Value {_value}";
}
public TResult Match<TResult>(Func<TLeft, TResult> left, Func<TRight, TResult> right)
{
return right(_value);
}
public void Match(Action<TLeft> left, Action<TRight> right)
{
right(_value);
}
public IEither<TLeft, T2> Bind< T2>(Func<TRight, IEither<TLeft, T2>> value)
{
return value(_value);
}
public bool IsRight() => false;
}