Class MaybeExtensions
Exposes a set of extensions for Maybe, including async operations on Task of Maybe.
public static class MaybeExtensions
- Inheritance
-
MaybeExtensions
- Inherited Members
Methods
BindAsync<TSource, TDestination>(Task<Maybe<TSource>>, Func<TSource, Task<Maybe<TDestination>>>)
Monadic bind operation with an asynchronous bind function.
public static Task<Maybe<TDestination>> BindAsync<TSource, TDestination>(this Task<Maybe<TSource>> task, Func<TSource, Task<Maybe<TDestination>>> bind)
Parameters
taskTask<Maybe<TSource>>Asynchronous Maybe.
bindFunc<TSource, Task<Maybe<TDestination>>>Asynchronous bind operation.
Returns
Type Parameters
TSourceSource type.
TDestinationReturn type.
Examples
Task<Maybe<int>> asyncUserId = GetUserIdAsync();
Maybe<User> user = await asyncUserId.BindAsync(id => FetchUserAsync(id));
Bind<TSource, TDestination>(Task<Maybe<TSource>>, Func<TSource, Maybe<TDestination>>)
Monadic bind operation on an asynchronous Maybe.
public static Task<Maybe<TDestination>> Bind<TSource, TDestination>(this Task<Maybe<TSource>> task, Func<TSource, Maybe<TDestination>> bind)
Parameters
taskTask<Maybe<TSource>>Asynchronous Maybe.
bindFunc<TSource, Maybe<TDestination>>Bind operation.
Returns
Type Parameters
TSourceSource type.
TDestinationReturn type.
Examples
Task<Maybe<string>> asyncValue = GetValueAsync();
Maybe<int> result = await asyncValue.Bind(value => ParseInt(value));
DoWhenNone<TSource>(Task<Maybe<TSource>>, Action)
Executes an operation if the asynchronous Maybe is in None state.
public static Task<Maybe<TSource>> DoWhenNone<TSource>(this Task<Maybe<TSource>> task, Action noneOperation)
Parameters
Returns
Type Parameters
TSourceSource type.
Examples
Task<Maybe<string>> asyncName = GetNameAsync();
await asyncName.DoWhenNone(() => Console.WriteLine("No value found"));
DoWhenSome<TSource>(Task<Maybe<TSource>>, Action<TSource>)
Executes an operation if the asynchronous Maybe is in Some state.
public static Task<Maybe<TSource>> DoWhenSome<TSource>(this Task<Maybe<TSource>> task, Action<TSource> someOperation)
Parameters
Returns
Type Parameters
TSourceSource type.
Examples
Task<Maybe<string>> asyncName = GetNameAsync();
await asyncName.DoWhenSome(name => Console.WriteLine($"Hello, {name}!"));
Do<TSource>(Task<Maybe<TSource>>, Action<TSource>, Action)
Executes operations depending on the current state of an asynchronous Maybe.
public static Task<Maybe<TSource>> Do<TSource>(this Task<Maybe<TSource>> task, Action<TSource> someOperation, Action noneOperation)
Parameters
taskTask<Maybe<TSource>>Asynchronous Maybe.
someOperationAction<TSource>Some operation.
noneOperationActionNone operation.
Returns
Type Parameters
TSourceSource type.
Examples
Task<Maybe<string>> asyncName = GetNameAsync();
await asyncName.Do(
someOperation: name => Console.WriteLine($"Found: {name}"),
noneOperation: () => Console.WriteLine("Not found")
);
FromNonEmptyString(string)
Creates a Maybe from a string value.
public static Maybe<string> FromNonEmptyString(string value)
Parameters
valuestringThe string value.
Returns
Examples
Maybe<string> name = MaybeExtensions.FromNonEmptyString("Alice"); // Some("Alice")
Maybe<string> empty = MaybeExtensions.FromNonEmptyString(""); // None
Maybe<string> whitespace = MaybeExtensions.FromNonEmptyString(" "); // None
IfNone<TSource>(Task<Maybe<TSource>>, TSource)
Returns the specified value if the asynchronous Maybe is in the None state, the Some value otherwise.
public static Task<TSource> IfNone<TSource>(this Task<Maybe<TSource>> task, TSource noneValue)
Parameters
taskTask<Maybe<TSource>>Asynchronous Maybe.
noneValueTSourceThe value to return if in None state.
Returns
- Task<TSource>
A value.
Type Parameters
TSourceSource type.
Examples
Task<Maybe<int>> asyncCount = GetCountAsync();
int count = await asyncCount.IfNone(0); // Returns 0 if None
MapAsync<TSource, TDestination>(Task<Maybe<TSource>>, Func<TSource, Task<TDestination>>)
Projects from one value to another using an asynchronous projection function.
public static Task<Maybe<TDestination>> MapAsync<TSource, TDestination>(this Task<Maybe<TSource>> task, Func<TSource, Task<TDestination>> map)
Parameters
taskTask<Maybe<TSource>>Asynchronous Maybe.
mapFunc<TSource, Task<TDestination>>Asynchronous projection function.
Returns
Type Parameters
TSourceSource type.
TDestinationResulting functor value type.
Examples
Task<Maybe<int>> asyncId = GetIdAsync();
Maybe<string> name = await asyncId.MapAsync(id => FetchNameAsync(id));
Map<TSource, TDestination>(Task<Maybe<TSource>>, Func<TSource, TDestination>)
Projects from one value to another on an asynchronous Maybe.
public static Task<Maybe<TDestination>> Map<TSource, TDestination>(this Task<Maybe<TSource>> task, Func<TSource, TDestination> map)
Parameters
Returns
Type Parameters
TSourceSource type.
TDestinationResulting functor value type.
Examples
Task<Maybe<string>> asyncName = GetNameAsync();
Maybe<int> length = await asyncName.Map(name => name.Length);
Match<TSource, TDestination>(Task<Maybe<TSource>>, Func<TSource, TDestination>, Func<TDestination>)
Match the two states of an asynchronous Maybe and return a non-null TDestination.
public static Task<TDestination> Match<TSource, TDestination>(this Task<Maybe<TSource>> task, Func<TSource, TDestination> some, Func<TDestination> none)
Parameters
taskTask<Maybe<TSource>>Asynchronous Maybe.
someFunc<TSource, TDestination>Some match operation.
noneFunc<TDestination>None match operation.
Returns
- Task<TDestination>
A non-null TDestination.
Type Parameters
TSourceSource type.
TDestinationReturn type.
Examples
Task<Maybe<string>> asyncName = GetNameAsync();
string greeting = await asyncName.Match(
some: name => $"Hello, {name}!",
none: () => "Hello, stranger!"
);