Cadenza : Cadenza Namespace

Maybe Class

Static utility methods for creating Cadenza.Maybe<T> instances.

public static class Maybe

⊟ Thread Safety

This type is thread safe.

⊟ Remarks

Use the Maybe.TryParse methods if it is not necessary to know why the value couldn't be parsed. Otherwise, use the Either.TryParse methods.

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

⊟ Members

See Also: Inherited members from object.

⊟ Public Methods

static
TryConvert<TSource,TResult> (TSource) : Maybe<TResult>
Converts the value of type TSource into an instance of type TResult.
static
TryParse<T> (string) : Maybe<T>
Converts a string into an instance of type T.
static
When<T> (bool, Func<T>) : Maybe<T>
Returns a value-containing Cadenza.Maybe<T> instance or Maybe<T>.Nothing, depending on condition.
static
When<T> (bool, T) : Maybe<T>
Returns a value-containing Cadenza.Maybe<T> instance or Maybe<T>.Nothing, depending on condition.

⊟ Member Details

⊟ TryConvert<TSource,TResult> Generic Method

Converts the value of type TSource into an instance of type TResult.

public static Maybe<TResult> TryConvert<TSource, TResult> (TSource value)

⊟ Type Parameters

TSource
The type to convert from.
TResult
The type to convert to.

⊟ Parameters

value
A TSource containing the value to parse into an instance of type TResult.

⊟ Returns

A Cadenza.Maybe<TResult>. If value could be converted into a value of type TResult, then Maybe<TResult>.HasValue will be true and Maybe<TResult>.Value will contain the converted value; otherwise, Maybe<TResult>.HasValue will be false.

⊟ Remarks

TryConvert uses Either.TryConvert``2(``0) to convert value into an instance of type TResult.

C# Example
Maybe<string> a = Maybe.TryConvert<int, string> (42);
Assert.IsTrue (a.HasValue);
Assert.AreEqual ("42", a.Value);

Maybe<DateTime> b = Maybe.TryConvert<int, DateTime> (42);
Assert.IsFalse (b.HasValue);

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

⊟ TryParse<T> Generic Method

Converts a string into an instance of type T.

public static Maybe<T> TryParse<T> (string value)

⊟ Type Parameters

T
The type of object to attempt to parse out of value.

⊟ Parameters

value
A string containing the value to parse into an instance of type T.

⊟ Returns

A Cadenza.Maybe<T>. If value could be converted into a value of type T, then Maybe<T>.HasValue will be true and Maybe<T>.Value will contain the converted value; otherwise, Maybe<T>.HasValue will be false.

⊟ Remarks

TryParse uses Either.TryConvert``2(``0) to convert the string value into an instance of type T.

C# Example
Maybe<int> n;

n = Maybe.TryParse<int> (null);
Assert.IsFalse (n.HasValue);

n = Maybe.TryParse<int> ("");
Assert.IsFalse (n.HasValue);

n = Maybe.TryParse<int> ("foo");
Assert.IsFalse (n.HasValue);

n = Maybe.TryParse<int> ("42.01");
Assert.IsFalse (n.HasValue);

n = Maybe.TryParse<int> ("42");
Assert.IsTrue (n.HasValue);
Assert.AreEqual (42, n.Value);

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

⊟ When<T> Generic Method

Returns a value-containing Cadenza.Maybe<T> instance or Maybe<T>.Nothing, depending on condition.

public static Maybe<T> When<T> (bool condition, Func<T> creator)

⊟ See Also

Maybe.When``1(bool, ``0)
ObjectCoda.Match``2(``0, Func<``0, Maybe<``1>>[])

⊟ Type Parameters

T
The type of value that Cadenza.Maybe<T> should contain.

⊟ Parameters

condition
If true, When returns creator().Just(). Otherwise, When returns Maybe<T>.Nothing.
creator
A Func<T> which is used to create the value returned when condition is true.

⊟ Returns

A Cadenza.Maybe<T>. If condition is true, then creator is evaluated and a Cadenza.Maybe<T> instance containing the value returned by creator is returned; otherwise, Maybe<T>.Nothing is returned.

⊟ Exceptions

Type Reason
ArgumentNullException condition is true and creator returned null.

⊟ Remarks

Use this method instead of Maybe.When``1(bool, ``0) when the value you need to return can only be created when condition is true.

C# Example
string s = GetSomeString();
int length;

// BAD:
length = s.Match (
    v => Maybe.When (s != null, s.Length),  // may throw, if s == null
    v => Maybe.When (s == null, 0));

// GOOD:
length = s.Match (
    v => Maybe.When (s != null, () => s.Length),  // delays evaluation.
    v => Maybe.When (s == null, 0));
          
C# Example
bool invoked = false;
r = Maybe.When (false, () => {invoked = true; return 42;});
Assert.IsFalse (invoked);
Assert.IsFalse (r.HasValue);

r = Maybe.When (true, () => {invoked = true; return 42;});
Assert.IsTrue (invoked);
Assert.IsTrue (r.HasValue);
Assert.AreEqual (42, r.Value);

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

⊟ When<T> Generic Method

Returns a value-containing Cadenza.Maybe<T> instance or Maybe<T>.Nothing, depending on condition.

public static Maybe<T> When<T> (bool condition, T value)

⊟ See Also

Maybe.When``1(bool, ``0)
ObjectCoda.Match``2(``0, Func<``0, Maybe<``1>>[])

⊟ Type Parameters

T
The type of value that Cadenza.Maybe<T> should contain.

⊟ Parameters

condition
If true, When returns value.Just(). Otherwise, When returns Maybe<T>.Nothing.
value
A T containing the value to return when condition is true.

⊟ Returns

A Cadenza.Maybe<T>. If condition is true, then a Cadenza.Maybe<T> instance containing the value value is returned; otherwise, Maybe<T>.Nothing is returned.

⊟ Exceptions

Type Reason
ArgumentNullException condition is true and value returned null.

⊟ Remarks

Use this method instead of Maybe.When``1(bool, Func<``0>) when it doesn't matter of value is immediately evaluated.

C# Example
var r = Maybe.When (true, 42);
Assert.IsTrue (r.HasValue);
Assert.AreEqual (42, r.Value);

r = Maybe.When (false, 42);
Assert.IsFalse (r.HasValue);

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0