// namespace SJK.Functional; // public sealed class Left : IEither // { // private readonly TLeft _value; // public Left(TLeft value){ // this._value = value; // } // public IEither Bind(Func> value) // { // return new Left(_value); // } // public (TLeft?, TRight?) Deconstruct()=>(_value,default(TRight)); // public bool IsRight() => true; // public IEither MapLeft(Func mapping) // => new Left(mapping(this._value)); // public IEither MapRight(Func mapping) // => new Left(this._value); // public TResult Match(Func left, Func right) // { // return left(_value); // } // public void Match(Action left, Action right) // { // left(_value); // } // public TLeft Reduce(Func mapping)=> _value; // public override string ToString() // { // return $"Left<{typeof(TLeft).Name}> with Value {_value}"; // } // }