Skip to main content

Maybe<TValue>

Namespace: Bogoware.Monads

Represents an optional value.

public struct Maybe<TValue>

Type Parameters

TValue

Inheritance ObjectValueTypeMaybe<TValue>
Implements IMaybe<TValue>, IMaybe, IEquatable<Maybe<TValue>>, IEnumerable<TValue>, IEnumerable
Attributes NullableContextAttribute, NullableAttribute, IsReadOnlyAttribute

Fields

None

Returns the singleton instance of Maybe<TValue> representing the none state.

public static Maybe<TValue> None;

Properties

IsSome

Is true if the maybe is some, otherwise false.

public bool IsSome { get; }

Property Value

Boolean

IsNone

Is true if the maybe is none, otherwise false.

public bool IsNone { get; }

Property Value

Boolean

Value

Gets the value if the maybe is some, otherwise the default.

public TValue Value { get; }

Property Value

TValue

Constructors

Maybe(TValue)

Initializes a new instance of the Maybe<TValue>.

Maybe(TValue value)

Parameters

value TValue

Maybe(Maybe<TValue>)

Initializes a new instance of the Maybe<TValue>.

Maybe(Maybe<TValue> maybe)

Parameters

maybe Maybe<TValue>

Methods

GetValueOrThrow()

Returns the value if the maybe is some, otherwise throws an exception.

TValue GetValueOrThrow()

Returns

TValue

Exceptions

MaybeNoneException

Map<TNewValue>(Func<TValue, TNewValue>)

Map the value to a new one.

Maybe<TNewValue> Map<TNewValue>(Func<TValue, TNewValue> map)

Type Parameters

TNewValue

Parameters

map Func<TValue, TNewValue>

Returns

Maybe<TNewValue>

Map<TNewValue>(Func<TValue, Task<TNewValue>>)

Task<Maybe<TNewValue>> Map<TNewValue>(Func<TValue, Task<TNewValue>> map)

Type Parameters

TNewValue

Parameters

map Func<TValue, Task<TNewValue>>

Returns

Task<Maybe<TNewValue>>

Bind<TNewValue>(Func<TValue, Maybe<TNewValue>>)

Bind the maybe and, possibly, to a new one.

Maybe<TNewValue> Bind<TNewValue>(Func<TValue, Maybe<TNewValue>> map)

Type Parameters

TNewValue

Parameters

map Func<TValue, Maybe<TNewValue>>

Returns

Maybe<TNewValue>

Bind<TNewValue>(Func<TValue, Task<Maybe<TNewValue>>>)

Task<Maybe<TNewValue>> Bind<TNewValue>(Func<TValue, Task<Maybe<TNewValue>>> map)

Type Parameters

TNewValue

Parameters

map Func<TValue, Task<Maybe<TNewValue>>>

Returns

Task<Maybe<TNewValue>>

Match<TResult>(Func<TValue, TResult>, TResult)

Maps a new value for both state of a Maybe<TValue>

TResult Match<TResult>(Func<TValue, TResult> mapValue, TResult none)

Type Parameters

TResult

Parameters

mapValue Func<TValue, TResult>

none TResult

Returns

TResult

Match<TResult>(Func<TValue, TResult>, Func<TResult>)

TResult Match<TResult>(Func<TValue, TResult> mapValue, Func<TResult> none)

Type Parameters

TResult

Parameters

mapValue Func<TValue, TResult>

none Func<TResult>

Returns

TResult

Match<TResult>(Func<TValue, Task<TResult>>, TResult)

Task<TResult> Match<TResult>(Func<TValue, Task<TResult>> mapValue, TResult none)

Type Parameters

TResult

Parameters

mapValue Func<TValue, Task<TResult>>

none TResult

Returns

Task<TResult>

Match<TResult>(Func<TValue, Task<TResult>>, Func<TResult>)

Task<TResult> Match<TResult>(Func<TValue, Task<TResult>> mapValue, Func<TResult> none)

Type Parameters

TResult

Parameters

mapValue Func<TValue, Task<TResult>>

none Func<TResult>

Returns

Task<TResult>

Match<TResult>(Func<TValue, Task<TResult>>, Func<Task<TResult>>)

Task<TResult> Match<TResult>(Func<TValue, Task<TResult>> mapValue, Func<Task<TResult>> none)

Type Parameters

TResult

Parameters

mapValue Func<TValue, Task<TResult>>

none Func<Task<TResult>>

Returns

Task<TResult>

Match<TResult>(Func<TValue, TResult>, Func<Task<TResult>>)

Task<TResult> Match<TResult>(Func<TValue, TResult> mapValue, Func<Task<TResult>> none)

Type Parameters

TResult

Parameters

mapValue Func<TValue, TResult>

none Func<Task<TResult>>

Returns

Task<TResult>

IfSome(Action<TValue>)

Execute the action if the Maybe<TValue> is Some.

Maybe<TValue> IfSome(Action<TValue> action)

Parameters

action Action<TValue>

Returns

Maybe<TValue>

IfSome(Func<TValue, Task>)

Task<Maybe<TValue>> IfSome(Func<TValue, Task> action)

Parameters

action Func<TValue, Task>

Returns

Task<Maybe<TValue>>

GetValue(TValue)

Retrieve the value if present or return the defaultValue if missing.

TValue GetValue(TValue defaultValue)

Parameters

defaultValue TValue

Returns

TValue

GetValue(Func<TValue>)

TValue GetValue(Func<TValue> defaultValue)

Parameters

defaultValue Func<TValue>

Returns

TValue

GetValue(Func<Task<TValue>>)

Task<TValue> GetValue(Func<Task<TValue>> defaultValue)

Parameters

defaultValue Func<Task<TValue>>

Returns

Task<TValue>

OfType<TNewValue>()

Downcast to TNew if possible, otherwise returns a Maybe<TValue> that is actually None case.

Maybe<TNewValue> OfType<TNewValue>()

Type Parameters

TNewValue

Returns

Maybe<TNewValue>

Equals(Object)

bool Equals(object obj)

Parameters

obj Object

Returns

Boolean

Equals(Maybe<TValue>)

bool Equals(Maybe<TValue> other)

Parameters

other Maybe<TValue>

Returns

Boolean

GetHashCode()

int GetHashCode()

Returns

Int32

ToString()

string ToString()

Returns

String