This is the API documentation for the JFlepp.Maybe library. Please note that the implementations do not show the actual implementation, but rather a reference to look up the behavior.
Representation of a maybe value.
Constructs a some value using the given value.
Parameters
value: The value of the maybe.
Exceptions
System.ArgumentNullException: Thrown value isnull.
Maybe
public Maybe(T value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
(Value, IsSome) = (value, true);
}Gets the type of the Maybe. Returns true if is some, false otherwise.
Gets the type of the Maybe. Returns true if is none, false otherwise.
Indicates whether the current object is equal to another object of the same type.
Parameters
obj: An object to compare with this object.
Returns: true if the current object is equal to the other parameter; otherwise, false.
Maybe implementation
bool Equals(object obj) => obj is Maybe<T> otherMaybe ? Equals(otherMaybe) : false;Serves as the default hash function.
Returns: A hash code for the current object.
Maybe implementation
int GetHashCode()
{
unchecked
{
return -1584136870 + EqualityComparer<T>.Default.GetHashCode(Value);
}
}Indicates whether the current maybes value is equal to another maybes value.
Parameters
other: Another maybe to compare with this object.
Returns: true if the current maybe is equal to the other parameter; otherwise, false.
Maybe implementation
bool Equals(Maybe<T> other)
{
if (IsNone) return other.IsNone;
if (other.IsNone) return false;
return Value.Equals(other.Value);
}Checks if two Maybe<T>s are equal.
Parameters
right: The rightMaybe<T>to compare.left: The leftMaybe<T>to compare.
Returns: true if objects are equal, false otherwise.
Maybe implementation
bool operator ==(Maybe<T> left, Maybe<T> right) => left.Equals(right);Checks if two Maybe<T>s are not equal.
Parameters
right: The rightMaybe<T>to compare.left: The leftMaybe<T>to compare.
Returns: true if objects are not equal, false otherwise.
Maybe implementation
bool operator !=(Maybe<T> left, Maybe<T> right) => !(left == right);Provides functions for creating Maybe<T>s.
Creates a new none instance of Maybe<1>
Returns: A new none instance of Maybe<T>
Creates a new some instance of Maybe<T>.
Parameters
value: The value of theMaybe<T>.
Returns: A new some instance of Maybe<T>.
Convert a potentially null value to an option.
Parameters
value: The input value.
Returns: The result option.
FSharp implementation
let ofObj value = match value with null -> None | _ -> Some value
// val ofObj : value:'a -> 'a option when 'a : nullMaybe implementation
Maybe<T> OfObject<T>(T value) => (value == null) switch
{
true => Some(value),
_ => None<T>(),
};Provides extension methods for working with the Maybe<T> type.
Applies the supplied function with the supplied initial state and the value of the Maybe<T> if is Some.
Parameters
input: The inputMaybe<T>.seed: The initial state.func: A function to update the state data when given a value from an option.
Returns: The original state if the Maybe is None, otherwise it returns the updated state with the folder and the Maybe<T> value.
FSharp implementation
let fold{'T,'State} folder (state:'State) (option: option{'T}) = match option with None -> state | Some x -> folder state x
// val fold :
// folder:('State -> 'T -> 'State) ->
// state:'State -> option:'T option -> 'State Maybe implementation
TState Aggregate<T, TState>(Maybe<T> input, TState state, Func<TState, T, TState> folder) => input.IsNone switch
{
true => folder(state, input.Value),
_ => state,
};Evaluates the equivalent of System.Linq.Enumerable.All for a Maybe<T>.
Parameters
input: The inputMaybe<T>.predicate: A function that evaluates to aboolwhen given a value from theMaybe<T>.
Returns: true if the maybe is None, otherwise it returns the result of applying the predicate to the Maybe<T> value.
FSharp implementation
let forall predicate option = match option with None -> true | Some x -> predicate x
// val forall : predicate:('a -> bool) -> option:'a option -> boolMaybe implementation
bool All<T>(Maybe<T> input, Predicate<T> predicate) => input.IsNone switch
{
true => predicate(input.Value),
_ => true,
};Evaluates the equivalent of System.Linq.Enumerable.Any for a Maybe<T>.
Parameters
input: The inputMaybe<T>.predicate: A function that evaluates to a Boolean when given a value from theMaybe<T>.
Returns: Returns false if the Maybe<T> is None, otherwise it returns the result of applying the predicate to the Maybe<T>s value.
FSharp implementation
let exists predicate option = match option with None -> false | Some x -> predicate x
// val exists : predicate:('a -> bool) -> option:'a option -> boolMaybe implementation
bool Any<T>(Maybe<T> input, Predicate<T> predicate) => input.IsSome switch
{
true => predicate(input.Value),
_ => false,
};Invokes a function on a Maybe<T> value that itself yields an option.
Parameters
input: The inputMaybe<T>.binder: A function that takes the value of type T from aMaybe<T>and transforms it into aMaybe<T>containing a value of typeTOut.
Returns: A maybe of the output type of the binder.
FSharp implementation
let bind binder option = match option with None -> None | Some x -> binder x
// val bind : binder:('a -> 'b option) -> option:'a option -> 'b optionMaybe implementation
Maybe<TOut> Bind<T, TOut>(Maybe<T> input, Func<T, Maybe<TOut>> binder) => input.IsSome switch
{
true => binder(input.Value),
_ => None{TOut}(),
};Evaluates to true if input is Some and its value is equal to value.
Parameters
input: The input maybe.value: The value to test for equality.
Returns: true if the Maybe<T> is Some and contains a value equal to value, otherwise false.
FSharp implementation
let inline contains value option = match option with None -> false | Some v -> v = value
// let inline contains value option = match option with None -> false | Some v -> v = valueMaybe implementation
bool Contains<T>(Maybe<T> input, T value) => input.IsSome switch
{
true => input.Value.Equals(value),
_ => false,
};Evaluates the equivalent of System.Linq.Enumerable.Count for a Maybe<T>.
Parameters
input: The inputMaybe<T>.
Returns: A zero if the Maybe<T> is None, a one otherwise.
FSharp implementation
count option = match option with None -> 0 | Some _ -> 1
// val count : option:'a option -> intMaybe implementation
int Count<T>(Maybe<T> input) => input.IsSome switch
{
true => 1,
_ => 0,
};Executes a function for a Maybe value if is Some.
Parameters
input: The inputMaybe<T>.action: A function to apply to theMaybevalue.
FSharp implementation
let iter action option = match option with None -> () | Some x -> action x
// val iter : action:('a -> unit) -> option:'a option -> unitMaybe implementation
void ForEach<T>(Maybe<T> input, Action<T> action)
{
if (input.IsSome) action(input.Value);
}Returns input if it is Some, otherwise returns ifNone.
Parameters
input: The input option.ifNone: The value to use ifinputisNone.
Returns: The input if the maybe is Some, else the alternate value.
FSharp implementation
let orElse ifNone option = match option with None -> ifNone | Some _ -> option
// val orElse : ifNone:'a option -> option:'a option -> 'a optionMaybe implementation
Maybe<T> OrElse<T>(Maybe<T> input, T ifNone) => input.IsSome switch
{
true => input,
_ => Maybe.Some(ifNone),
};Returns input if it is Some, otherwise evaluates ifNoneThunk and returns the result.
ifNoneThunk is not evaluated unless input is None.
Parameters
input: The input option.ifNoneThunk: A thunk that provides an alternate option when evaluated.
Returns: The input if the maybe is Some, else the alternate value.
FSharp implementation
let orElseWith ifNoneThunk option = match option with None -> ifNoneThunk () | Some _ -> option
// val orElseWith : ifNoneThunk:(unit -> 'a option) -> option:'a option -> 'a optionMaybe implementation
Maybe<T> OrElse<T>(Maybe<T> input, Func<T> ifNoneThunk) => input.IsSome switch
{
true => input,
_ => Maybe.Some(ifNoneThunk()),
};Transforms a Maybe<T> value by using a specified mapping function.
Parameters
input: The inputMaybe<T>.mapping: A function to apply to theMaybe<T>value.
Returns: A Maybe<T> of the result of applying the mapping function, or None if the Maybe<T> is None.
FSharp implementation
let map mapping option = match option with None -> None | Some x -> Some (mapping x)
// val map : mapping:('a -> 'b) -> option:'a option -> 'b optionMaybe implementation
Maybe<TOut> Select<T, TOut>(Maybe<T> input, Func<T, TOut> mapping) => input.IsSome switch
{
true => Some(mapping(input.Value)),
_ => None{TOut}()
};Gets the value of the maybe if the option is Some, otherwise returns the specified default value.
Parameters
input: The input maybe.or: The specified default value.
Returns: The option if the option is Some, else the default value.
FSharp implementation
let defaultValue value option = match option with None -> value | Some v -> v
// val defaultValue : value:'a -> option:'a option -> 'aMaybe implementation
T SingleOr<T>(Maybe<T> input, T or) => input.IsSome switch
{
true => input.Value,
_ => or,
};Gets the value of the option if the maybe is Some, otherwise evaluates or and returns the result.
Parameters
input: The input maybe.or: A thunk that provides a default value when evaluated.
Returns: The maybe if the maybe is Some, else the result of evaluating or.
FSharp implementation
let defaultWith defThunk option = match option with None -> defThunk () | Some v -> v
// val defaultWith : defThunk:(unit -> 'a) -> option:'a option -> 'aMaybe implementation
T SingleOr<T>(Maybe<T> input, Func<T> or) => input.IsSome switch
{
true => input.Value,
_ => or.ThrowIfNull(nameof(or))(),
};Convert the Maybe<T> to an array of length 0 or 1.
Parameters
input: The inputMaybe<T>.
Returns: The result array.
FSharp implementation
let toArray option = match option with None -> [| |] | Some x -> [| x |]
// val toArray : option:'a option -> 'a []Maybe implementation
T[] ToArray<T>(Maybe<T> input) => input.IsSome switch
{
true => new[] { input.Value },
_ => Array.Empty{T}(),
};Convert the Maybe<T> to a list of length 0 or 1.
Parameters
input: The inputMaybe<T>.
Returns: The result list.
FSharp implementation
let toList option = match option with None -> [ ] | Some x -> [ x ]
// let toList option = match option with None -> [ ] | Some x -> [ x ]Maybe implementation
List<T> ToList<T>(Maybe<T> input) => input.IsSome switch
{
true => new List{T} { input.Value },
_ => new List{T}(),
};Convert an Maybe<T> to a potentially null value.
Parameters
inputThe input value.
Returns: The result value, which is null if the input was None.
FSharp implementation
let toObj value = match value with None -> null | Some x -> x
// val toObj : value:'a option -> 'a when 'a : nullMaybe implementation
object ToObject<T>(Maybe<T> input) => input.IsSome switch
{
true => input.Value,
_ => null,
}; Invokes a function on a Maybe<T> that itself yields an option.
Parameters
input: The inputMaybe<T>.predicateA function that evaluates whether the value contained in theMaybe<T>should remain, or be filtered out.
Returns: The input if the predicate evaluates to true; otherwise, None.
FSharp implementation
let filter predicate option = match option with None -> None | Some x -> if predicate x then Some x else None
// val filter : predicate:('a -> bool) -> option:'a option -> 'a optionMaybe implementation
Maybe<T> Where<T>(Maybe<T> input, Predicate<T> predicate) => input.IsSome switch
{
true => predicate(input.Value) ? input : None{T}(),
_ => None{T}(),
};Provides extensions for struct Maybes.
Convert the Maybe<T> to a Nullable value.
Returns: null if the Maybe<T> is None, the value otherwise.
FSharp implementation
let toNullable option = match option with None -> System.Nullable() | Some v -> System.Nullable(v)
// val toNullable :
// option:'a option -> System.Nullable{'a}
// when 'a : (new : unit -> 'a) and 'a : struct and 'a :> System.ValueTypeMaybe implementation
T? ToNullable<T>(Maybe<T> input) where T : struct => input.IsSome switch
{
true => input.Value,
_ => null,
};Provides extensions for reference Maybes.
Convert the Maybe<T> to a Nullable value.
Returns: null if the Maybe<T> is None, the value otherwise.
FSharp implementation
let toNullable option = match option with None -> System.Nullable() | Some v -> System.Nullable(v)
// val toNullable :
// option:'a option -> System.Nullable{'a}
// when 'a : (new : unit -> 'a) and 'a : struct and 'a :> System.ValueTypeMaybe implementation
T ToNullable<T>(Maybe<T> input) where T : class => input.IsSome switch
{
true => input.Value,
_ => null,
};Provides unsafe extensions for Maybe<T>s.
Gets the value of the maybe if is Some.
Parameters
input: TheMaybe<T>to get the value from.
Returns: The value of the Maybe<T> if is Some.
Exceptions
System.NullReferenceException: If the maybe isNone.
FSharp implementation
let get option = match option with None -> invalidArg "option" (SR.GetString(SR.optionValueWasNone)) | Some x -> x
// val get: option:'T option -> 'TMaybe implementation
T GetValue<T>(Maybe<T> input) => input.IsSome switch
{
true => input.Value,
_ => throw new NullReferenceException(),
};