Files
SjkScripts/Functional/IOption.cs
ronnie 262b76c4d5
All checks were successful
Build NuGet / build (push) Successful in 1m43s
Refactored Option<T> to have opertator lifting and removed ref struct for now.
2026-08-07 12:58:11 -04:00

52 lines
2.6 KiB
C#

// using System.Diagnostics.CodeAnalysis;
// namespace SJK.Functional;
// public interface IOption<T> : IEquatable<IOption<T>>
// {
// /// <summary>
// /// Applies a function to the contained value if it exists (is not None), otherwise applies a default function.
// /// </summary>
// /// <param name="onSome">Function to apply if the option contains a value.</param>
// /// <param name="onNone">Function to apply if the option does not contain a value.</param>
// /// <returns>The result of applying either the onSome or onNone function.</returns>
// TResult Match<TResult>(Func<T, TResult> onSome, Func<TResult> onNone);
// void Match(Action<T> onSome,Action onNone);
// /// <summary>
// /// Chains operations on the contained value using a function that returns an option.
// /// </summary>
// /// <param name="f">A function that takes the contained value and returns an option.</param>
// /// <returns>An option resulting from applying the function f to the contained value.</returns>
// IOption<TResult> Bind<TResult>(Func<T, IOption<TResult>> f);
// /// <summary>
// /// Maps a function over the contained value if it exists (is not None).
// /// </summary>
// /// <param name="f">The function to apply to the contained value.</param>
// /// <returns>An option containing the result of applying f to the contained value.</returns>
// IOption<TResult> Map<TResult>(Func<T, TResult> f);
// /// <summary>
// /// Returns the contained value if it exists (is not None), otherwise returns the provided default value.
// /// </summary>
// /// <param name="aDefault">The default value to return if the option does not contain a value.</param>
// /// <returns>The contained value or the default value.</returns>
// T Or(T aDefault);
// /// <summary>
// /// Returns the contained value if it exists (is not None), otherwise calls the provided default function.
// /// </summary>
// /// <param name="aDefault">The default value to return if the option does not contain a value.</param>
// /// <returns>The contained value or the default value.</returns>
// T Or(Func<T> aDefault);
// /// <summary>
// /// Checks if the option contains a value (is not None) and outputs it if true.
// /// </summary>
// /// <param name="value">An out parameter that will be assigned the contained value if it exists.</param>
// /// <returns>true if the option contains a value; false otherwise.</returns>
// bool HasValue([NotNullWhen(true)]out T? value);
// // [Obsolete]
// bool HasValue();
// }