LanguageExt.Core

LanguageExt.Core Monads Alternative Value Monads Option OptionUnsafe

Contents

struct OptionUnsafe <A> Source #

Discriminated union type. Can be in one of two states:

Some(a)
None

Typeclass instances available for this type:

BiFoldable  : MOptionUnsafe
Eq          : EqOpt
Foldable    : MOptionUnsafe
Functor     : FOptionUnsafe
MonadPlus   : MOptionUnsafe
Optional    : MOptionUnsafe
Ord         : OrdOpt

Parameters

type A

Bound value

Fields

field OptionUnsafe<A> None = default Source #

None

Properties

property object Case Source #

Reference version of option for use in pattern-matching

Some = result is A
None = result is null

property bool IsSome Source #

Is the option in a Some state

property bool IsNone Source #

Is the option in a None state

Constructors

constructor OptionUnsafe (IEnumerable<A> option) Source #

Ctor that facilitates serialisation

Parameters

param option

None or Some A.

Methods

method OptionUnsafe<A> Some (A value) Source #

Construct an OptionUnsafe of A in a Some state

Parameters

param value

Value to bind, must be non-null

returns

OptionUnsafe of A

method void GetObjectData (SerializationInfo info, StreamingContext context) Source #

method IEnumerator<A> GetEnumerator () Source #

method bool Equals (OptionUnsafe<A> other) Source #

Uses the EqDefault instance to do an equality check on the bound value. To use anything other than the default call oa.Equals<EqA>(ob) where EqA is an instance derived from Eq<A>

This uses the EqDefault instance for comparison of the bound A values. The EqDefault instance wraps up the .NET EqualityComparer.Default behaviour.

Parameters

param other

The OptionUnsafe type to compare this type with

returns

True if this and other are equal

method bool Equals <EqA> (OptionUnsafe<A> other) Source #

where EqA : struct, Eq<A>

Uses the EqA instance to do an equality check on the bound value.

Parameters

param other

The OptionUnsafe type to compare this type with

returns

True if this and other are equal

method int CompareTo (OptionUnsafe<A> other) Source #

Uses the OrdDefault instance to do an ordering comparison on the bound value. To use anything other than the default call this.Compare<OrdA>(this, other), where OrdA is an instance derived from Ord<A>

Parameters

param other

The OptionUnsafe type to compare this type with

method int CompareTo <OrdA> (OptionUnsafe<A> other) Source #

where OrdA : struct, Ord<A>

Uses the Ord instance provided to do an ordering comparison on the bound value.

Parameters

param other

The OptionUnsafe type to compare this type with

method bool Equals (object obj) Source #

DO NOT USE - Use the Structural equality variant of this method Equals<EQ, A>(y)

method int GetHashCode () Source #

Calculate the hash-code from the bound value, unless the OptionUnsafe is in a None state, in which case the hash-code will be 0

Parameters

returns

Hash-code from the bound value, unless the OptionUnsafe is in a None state, in which case the hash-code will be 0

method int CompareTo (object obj) Source #

method string ToString () Source #

Get a string representation of the OptionUnsafe

Parameters

returns

String representation of the OptionUnsafe

method OptionUnsafe<A> Do (Action<A> f) Source #

Impure iteration of the bound value in the structure

Parameters

returns

Returns the original unmodified structure

method OptionUnsafe<B> Select <B> (Func<A, B> f) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param f

Projection function

returns

Mapped functor

method OptionUnsafe<B> Map <B> (Func<A, B> f) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param f

Projection function

returns

Mapped functor

method OptionUnsafe<B> Bind <B> (Func<A, OptionUnsafe<B>> f) Source #

Monad bind operation

method OptionUnsafe<B> BiBind <B> (Func<A, OptionUnsafe<B>> Some, Func<OptionUnsafe<B>> None) Source #

Bi-bind. Allows mapping of both monad states

method OptionUnsafe<C> SelectMany <B, C> ( Func<A, OptionUnsafe<B>> bind, Func<A, B, C> project) Source #

Monad bind operation

method R MatchUntyped <R> (Func<object, R> Some, Func<R> None) Source #

Match operation with an untyped value for Some. This can be useful for serialisation and dealing with the IOptional interface

Parameters

type R

The return type

param Some

Operation to perform if the option is in a Some state

param None

Operation to perform if the option is in a None state

returns

The result of the match operation

method R MatchUntypedUnsafe <R> (Func<object, R> Some, Func<R> None) Source #

Match operation with an untyped value for Some. This can be useful for serialisation and dealing with the IOptional interface

Parameters

type R

The return type

param Some

Operation to perform if the option is in a Some state

param None

Operation to perform if the option is in a None state

returns

The result of the match operation

method Type GetUnderlyingType () Source #

Get the Type of the bound value

Parameters

returns

Type of the bound value

method Arr<A> ToArray () Source #

Convert the OptionUnsafe to an enumerable of zero or one items

Parameters

returns

An enumerable of zero or one items

method Lst<A> ToList () Source #

Convert the OptionUnsafe to an immutable list of zero or one items

Parameters

returns

An immutable list of zero or one items

method Seq<A> ToSeq () Source #

Convert the OptionUnsafe to an enumerable sequence of zero or one items

Parameters

returns

An enumerable sequence of zero or one items

method IEnumerable<A> AsEnumerable () Source #

Convert the OptionUnsafe to an enumerable of zero or one items

Parameters

returns

An enumerable of zero or one items

method Eff<A> ToEff () Source #

Convert the structure to an Eff

Parameters

returns

An Eff representation of the structure

method Eff<A> ToEff (Error Fail) Source #

Convert the structure to an Eff

Parameters

param Fail

Default value if the structure is in a None state

returns

An Eff representation of the structure

method Aff<A> ToAff () Source #

Convert the structure to an Aff

Parameters

returns

An Aff representation of the structure

method Aff<A> ToAff (Error Fail) Source #

Convert the structure to an Aff

Parameters

param Fail

Default value if the structure is in a None state

returns

An Aff representation of the structure

method Validation<FAIL, A> ToValidation <FAIL> (FAIL defaultFailureValue) Source #

method EitherUnsafe<L, A> ToEither <L> (L defaultLeftValue) Source #

Convert the structure to an EitherUnsafe

Parameters

param defaultLeftValue

Default value if the structure is in a None state

returns

An Either representation of the structure

method EitherUnsafe<L, A> ToEither <L> (Func<L> Left) Source #

Convert the structure to an EitherUnsafe

Parameters

param Left

Function to invoke to get a default value if the structure is in a None state

returns

An Either representation of the structure

method SomeUnsafeUnitContext<MOptionUnsafe<A>, OptionUnsafe<A>, A> Some (Action<A> f) Source #

Fluent pattern matching. Provide a Some handler and then follow on fluently with .None(...) to complete the matching operation. This is for dispatching actions, use Some<A,B>(...) to return a value from the match operation.

Parameters

param f

The Some(x) match operation

method SomeUnsafeContext<MOptionUnsafe<A>, OptionUnsafe<A>, A, B> Some <B> (Func<A, B> f) Source #

Fluent pattern matching. Provide a Some handler and then follow on fluently with .None(...) to complete the matching operation. This is for returning a value from the match operation, to dispatch an action instead, use Some(...)

Parameters

type B

Match operation return value type

param f

The Some(x) match operation

returns

The result of the match operation

method B MatchUnsafe <B> (Func<A, B> Some, Func<B> None) Source #

Match the two states of the OptionUnsafe and return a B, which can be null.

Parameters

type B

Return type

param Some

Some match operation. May return null.

param None

None match operation. May return null.

returns

B, or null

method B MatchUnsafe <B> (Func<A, B> Some, B None) Source #

Match the two states of the OptionUnsafe and return a B, which can be null.

Parameters

type B

Return type

param Some

Some match operation. May return null.

param None

None match operation. May return null.

returns

B, or null

method Unit MatchUnsafe (Action<A> Some, Action None) Source #

Match the two states of the OptionUnsafe

Parameters

param Some

Some match operation

param None

None match operation

method Unit IfSomeUnsafe (Action<A> f) Source #

Invokes the action if OptionUnsafe is in the Some state, otherwise nothing happens.

Parameters

param f

Action to invoke if OptionUnsafe is in the Some state

method Unit IfSomeUnsafe (Func<A, Unit> f) Source #

Invokes the f function if OptionUnsafe is in the Some state, otherwise nothing happens.

Parameters

param f

Function to invoke if OptionUnsafe is in the Some state

method A IfNoneUnsafe (Func<A> None) Source #

Returns the result of invoking the None() operation if the optional is in a None state, otherwise the bound Some(x) value is returned.

Will not accept a null return value from the None operation

Parameters

param None

Operation to invoke if the structure is in a None state

returns

Tesult of invoking the None() operation if the optional is in a None state, otherwise the bound Some(x) value is returned.

method A IfNoneUnsafe (A noneValue) Source #

Returns the noneValue if the optional is in a None state, otherwise the bound Some(x) value is returned.

Will not accept a null noneValue

Parameters

param noneValue

Value to return if in a None state

returns

noneValue if the optional is in a None state, otherwise the bound Some(x) value is returned

method S Fold <S> (S state, Func<S, A, S> folder) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param folder

Folder function, applied if OptionUnsafe is in a Some state

returns

The aggregate state

method S FoldBack <S> (S state, Func<S, A, S> folder) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param folder

Folder function, applied if OptionUnsafe is in a Some state

returns

The aggregate state

method S BiFold <S> (S state, Func<S, A, S> Some, Func<S, Unit, S> None) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param Some

Folder function, applied if OptionUnsafe is in a Some state

param None

Folder function, applied if OptionUnsafe is in a None state

returns

The aggregate state

method S BiFold <S> (S state, Func<S, A, S> Some, Func<S, S> None) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param Some

Folder function, applied if OptionUnsafe is in a Some state

param None

Folder function, applied if OptionUnsafe is in a None state

returns

The aggregate state

method OptionUnsafe<B> BiMap <B> (Func<A, B> Some, Func<Unit, B> None) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param Some

Projection function

param None

Projection function

returns

Mapped functor

method OptionUnsafe<B> BiMap <B> (Func<A, B> Some, Func<B> None) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param Some

Projection function

param None

Projection function

returns

Mapped functor

method int Count () Source #

Return the number of bound values in this structure:

None = 0

Some = 1

Parameters

returns

method bool ForAll (Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

method bool BiForAll (Func<A, bool> Some, Func<Unit, bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param Some

Predicate to apply if in a Some state

param None

Predicate to apply if in a None state

returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method bool BiForAll (Func<A, bool> Some, Func<bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param Some

Predicate to apply if in a Some state

param None

Predicate to apply if in a None state

returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method bool Exists (Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method bool BiExists (Func<A, bool> Some, Func<Unit, bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method bool BiExists (Func<A, bool> Some, Func<bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method Unit Iter (Action<A> Some) Source #

Invoke an action for the bound value (if in a Some state)

Parameters

param Some

Action to invoke

method Unit BiIter (Action<A> Some, Action<Unit> None) Source #

Invoke an action depending on the state of the OptionUnsafe

Parameters

param Some

Action to invoke if in a Some state

param None

Action to invoke if in a None state

method Unit BiIter (Action<A> Some, Action None) Source #

Invoke an action depending on the state of the OptionUnsafe

Parameters

param Some

Action to invoke if in a Some state

param None

Action to invoke if in a None state

method OptionUnsafe<A> Filter (Func<A, bool> pred) Source #

Apply a predicate to the bound value (if in a Some state)

Parameters

param pred

Predicate to apply

returns

Some(x) if the OptionUnsafe is in a Some state and the predicate returns True. None otherwise.

method OptionUnsafe<A> Where (Func<A, bool> pred) Source #

Apply a predicate to the bound value (if in a Some state)

Parameters

param pred

Predicate to apply

returns

Some(x) if the OptionUnsafe is in a Some state and the predicate returns True. None otherwise.

method OptionUnsafe<D> Join <B, C, D> ( OptionUnsafe<B> inner, Func<A, C> outerKeyMap, Func<B, C> innerKeyMap, Func<A, B, D> project) Source #

Monadic join

method OptionUnsafe<Func<B, C>> ParMap <B, C> (Func<A, B, C> func) Source #

Partial application map

method OptionUnsafe<Func<B, Func<C, D>>> ParMap <B, C, D> (Func<A, B, C, D> func) Source #

Partial application map

method Task<OptionUnsafe<B>> MapAsync <B> (Func<A, Task<B>> map) Source #

Apply a map operation that returns a Task result

Parameters

type B

Type of the bound result value

param map

Mapping function to apply

returns

A task

Operators

operator < (OptionUnsafe<A> lhs, OptionUnsafe<A> rhs) Source #

Comparison operator

Parameters

param lhs

The left hand side of the operation

param rhs

The right hand side of the operation

returns

True if lhs < rhs

operator <= (OptionUnsafe<A> lhs, OptionUnsafe<A> rhs) Source #

Comparison operator

Parameters

param lhs

The left hand side of the operation

param rhs

The right hand side of the operation

returns

True if lhs <= rhs

operator > (OptionUnsafe<A> lhs, OptionUnsafe<A> rhs) Source #

Comparison operator

Parameters

param lhs

The left hand side of the operation

param rhs

The right hand side of the operation

returns

True if lhs > rhs

operator >= (OptionUnsafe<A> lhs, OptionUnsafe<A> rhs) Source #

Comparison operator

Parameters

param lhs

The left hand side of the operation

param rhs

The right hand side of the operation

returns

True if lhs >= rhs

operator == (OptionUnsafe<A> lhs, OptionUnsafe<A> rhs) Source #

Equality operator

This uses the EqDefault instance for comparison of the bound A values. The EqDefault instance wraps up the .NET EqualityComparer.Default behaviour. For more control over equality you can call:

equals<EQ, A>(lhs, rhs);

Where EQ is a struct derived from Eq. For example:

equals<EqString, string>(lhs, rhs);
equals<EqArray<int>, int[]>(lhs, rhs);

Parameters

param lhs

Left hand side of the operation

param rhs

Right hand side of the operation

returns

True if the values are equal

operator != (OptionUnsafe<A> lhs, OptionUnsafe<A> rhs) Source #

Non-equality operator

This uses the EqDefault instance for comparison of the A value. The EqDefault type-class wraps up the .NET EqualityComparer.Default behaviour. For more control over equality you can call:

!equals<EQ, A>(lhs, rhs);

Where EQ is a struct derived from Eq. For example:

!equals<EqString, string>(lhs, rhs);
!equals<EqArray<int>, int[]>(lhs, rhs);

Parameters

param lhs

Left hand side of the operation

param rhs

Right hand side of the operation

returns

True if the values are equal

operator | (OptionUnsafe<A> lhs, OptionUnsafe<A> rhs) Source #

Coalescing operator

Parameters

param lhs

Left hand side of the operation

param rhs

Right hand side of the operation

returns

if lhs is Some then lhs, else rhs

operator true (OptionUnsafe<A> value) Source #

Truth operator

operator false (OptionUnsafe<A> value) Source #

Falsity operator

class OptionUnsafeExtensions Source #

Extension methods for OptionUnsafe

Methods

method OptionUnsafe<A> Flatten <A> (this OptionUnsafe<OptionUnsafe<A>> ma) Source #

Monadic join

method IEnumerable<A> Somes <A> (this IEnumerable<OptionUnsafe<A>> self) Source #

Extracts from a list of OptionUnsafe all the Some elements. All the Some elements are extracted in order.

method Seq<A> Somes <A> (this Seq<OptionUnsafe<A>> self) Source #

Extracts from a list of OptionUnsafe all the Some elements. All the Some elements are extracted in order.

method OptionUnsafe<A> Add <ARITH, A> (this OptionUnsafe<A> x, OptionUnsafe<A> y) Source #

where ARITH : struct, Arithmetic<A>

Add the bound values of x and y, uses an Add type-class to provide the add operation for type A. For example x.Add<TInteger,int>(y)

Parameters

type ADD

Add of A

type A

Bound value type

param x

Left hand side of the operation

param y

Right hand side of the operation

returns

An option with y added to x

method OptionUnsafe<A> Subtract <ARITH, A> (this OptionUnsafe<A> x, OptionUnsafe<A> y) Source #

where ARITH : struct, Arithmetic<A>

Find the subtract between the two bound values of x and y, uses a Subtract type-class to provide the subtract operation for type A. For example x.Subtract<TInteger,int>(y)

Parameters

type DIFF

Subtract of A

type A

Bound value type

param x

Left hand side of the operation

param y

Right hand side of the operation

returns

An OptionUnsafe with the subtract between x and y

method OptionUnsafe<A> Product <ARITH, A> (this OptionUnsafe<A> x, OptionUnsafe<A> y) Source #

where ARITH : struct, Arithmetic<A>

Find the product between the two bound values of x and y, uses a Product type-class to provide the product operation for type A. For example x.Product<TInteger,int>(y)

Parameters

type PROD

Product of A

type A

Bound value type

param x

Left hand side of the operation

param y

Right hand side of the operation

returns

An OptionUnsafe with the product of x and y

method OptionUnsafe<A> Divide <NUM, A> (this OptionUnsafe<A> x, OptionUnsafe<A> y) Source #

where NUM : struct, Num<A>

Divide the two bound values of x and y, uses a Divide type-class to provide the divide operation for type A. For example x.Divide<TDouble,double>(y)

Parameters

type DIV

Divide of A

type A

Bound value type

param x

Left hand side of the operation

param y

Right hand side of the operation

returns

An OptionUnsafe x / y

method OptionUnsafe<B> Apply <A, B> (this OptionUnsafe<Func<A, B>> fab, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type FB derived from Applicative of B

method OptionUnsafe<B> Apply <A, B> (this Func<A, B> fab, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type FB derived from Applicative of B

method OptionUnsafe<C> Apply <A, B, C> (this OptionUnsafe<Func<A, B, C>> fabc, OptionUnsafe<A> fa, OptionUnsafe<B> fb) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative a to apply

param fb

Applicative b to apply

returns

Applicative of type FC derived from Applicative of C

method OptionUnsafe<C> Apply <A, B, C> (this Func<A, B, C> fabc, OptionUnsafe<A> fa, OptionUnsafe<B> fb) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative a to apply

param fb

Applicative b to apply

returns

Applicative of type FC derived from Applicative of C

method OptionUnsafe<Func<B, C>> Apply <A, B, C> (this OptionUnsafe<Func<A, B, C>> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<Func<B, C>> Apply <A, B, C> (this Func<A, B, C> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<Func<B, C>> Apply <A, B, C> (this OptionUnsafe<Func<A, Func<B, C>>> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<Func<B, C>> Apply <A, B, C> (this Func<A, Func<B, C>> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<B> Action <A, B> (this OptionUnsafe<A> fa, OptionUnsafe<B> fb) Source #

Evaluate fa, then fb, ignoring the result of fa

Parameters

param fa

Applicative to evaluate first

param fb

Applicative to evaluate second and then return

returns

Applicative of type Option

method A? ToNullable <A> (this OptionUnsafe<A> ma) Source #

where A : struct

Convert the OptionUnsafe type to a Nullable of A

Parameters

type A

Type of the bound value

param ma

OptionUnsafe to convert

returns

Nullable of A

method IEnumerable<R> Match <T, R> (this IEnumerable<OptionUnsafe<T>> list, Func<T, IEnumerable<R>> Some, Func<IEnumerable<R>> None ) Source #

Match over a list of OptionUnsafes

Parameters

type T

Type of the bound values

type R

Result type

param list

List of OptionUnsafes to match against

param Some

Operation to perform when an OptionUnsafe is in the Some state

param None

Operation to perform when an OptionUnsafe is in the None state

returns

An enumerable of results of the match operations

method IEnumerable<R> Match <T, R> (this IEnumerable<OptionUnsafe<T>> list, Func<T, IEnumerable<R>> Some, IEnumerable<R> None) Source #

Match over a list of OptionUnsafes

Parameters

type T

Type of the bound values

type R

Result type

param list

List of OptionUnsafes to match against

param Some

Operation to perform when an Option is in the Some state

param None

Default if the list is empty

returns

An enumerable of results of the match operations

method Task<B> MatchAsync <A, B> (this OptionUnsafe<A> ma, Func<A, Task<B>> Some, Func<B> None) Source #

Match the two states of the OptionUnsafe and return a promise for a non-null R.

Parameters

type B

Return type

param Some

Some handler. Must not return null.

param None

None handler. Must not return null.

returns

A promise to return a non-null R

method Task<B> MatchAsync <A, B> (this OptionUnsafe<A> ma, Func<A, Task<B>> Some, Func<Task<B>> None) Source #

Match the two states of the OptionUnsafe and return a promise for a non-null R.

Parameters

type B

Return type

param Some

Some handler. Must not return null.

param None

None handler. Must not return null.

returns

A promise to return a non-null R

method int Sum (this OptionUnsafe<int> a) Source #

Sum the bound value

This is a legacy method for backwards compatibility

Parameters

param a

OptionUnsafe of int

returns

The bound value or 0 if None

method A Sum <NUM, A> (this OptionUnsafe<A> self) Source #

where NUM : struct, Num<A>

Sum the bound value

This is a legacy method for backwards compatibility

Parameters

param self

Option of A that is from the type-class NUM

returns

The bound value or 0 if None

method Task<OptionUnsafe<B>> MapAsync <A, B> (this Task<OptionUnsafe<A>> self, Func<A, Task<B>> map) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param map

Projection function

returns

Mapped functor

method Task<OptionUnsafe<B>> MapAsync <A, B> (this Task<OptionUnsafe<A>> self, Func<A, B> map) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param map

Projection function

returns

Mapped functor

method Task<OptionUnsafe<B>> MapAsync <A, B> (this OptionUnsafe<Task<A>> self, Func<A, B> map) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param map

Projection function

returns

Mapped functor

method Task<OptionUnsafe<B>> MapAsync <A, B> (this OptionUnsafe<Task<A>> self, Func<A, Task<B>> map) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param map

Projection function

returns

Mapped functor

method Task<OptionUnsafe<B>> BindAsync <A, B> (this OptionUnsafe<A> self, Func<A, Task<OptionUnsafe<B>>> bind) Source #

Monad bind operation

method Task<OptionUnsafe<B>> BindAsync <A, B> (this Task<OptionUnsafe<A>> self, Func<A, Task<OptionUnsafe<B>>> bind) Source #

Monad bind operation

method Task<OptionUnsafe<B>> BindAsync <A, B> (this Task<OptionUnsafe<A>> self, Func<A, OptionUnsafe<B>> bind) Source #

Monad bind operation

method Task<OptionUnsafe<B>> BindAsync <A, B> (this OptionUnsafe<Task<A>> self, Func<A, OptionUnsafe<B>> bind) Source #

Monad bind operation

method Task<OptionUnsafe<B>> BindAsync <A, B> (this OptionUnsafe<Task<A>> self, Func<A, Task<OptionUnsafe<B>>> bind) Source #

Monad bind operation

method Task<Unit> IterAsync <A> (this Task<OptionUnsafe<A>> self, Action<A> Some) Source #

Invoke an action for the bound value (if in a Some state)

Parameters

param Some

Action to invoke

method Task<Unit> IterAsync <A> (this OptionUnsafe<Task<A>> self, Action<A> Some) Source #

Invoke an action for the bound value (if in a Some state)

Parameters

param Some

Action to invoke

method Task<int> CountAsync <A> (this Task<OptionUnsafe<A>> self) Source #

Return the number of bound values in this structure:

None = 0

Some = 1

Parameters

returns

method Task<S> FoldAsync <A, S> (this Task<OptionUnsafe<A>> self, S state, Func<S, A, S> folder) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param folder

Folder function, applied if OptionUnsafe is in a Some state

returns

The aggregate state

method Task<S> FoldAsync <A, S> (this OptionUnsafe<Task<A>> self, S state, Func<S, A, S> folder) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param folder

Folder function, applied if OptionUnsafe is in a Some state

returns

The aggregate state

method Task<bool> ForAllAsync <A> (this Task<OptionUnsafe<A>> self, Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

method Task<bool> ForAllAsync <A> (this OptionUnsafe<Task<A>> self, Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

method Task<bool> ExistsAsync <A> (this Task<OptionUnsafe<A>> self, Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method Task<bool> ExistsAsync <A> (this OptionUnsafe<Task<A>> self, Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param pred
returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

class Prelude Source #

Methods

method OptionUnsafe<A> flatten <A> (OptionUnsafe<OptionUnsafe<A>> ma) Source #

Monadic join

method OptionUnsafe<T> subtract <NUM, T> (OptionUnsafe<T> lhs, OptionUnsafe<T> rhs) Source #

where NUM : struct, Num<T>

Subtract the Ts

Parameters

param lhs

Left-hand side of the operation

param rhs

Right-hand side of the operation

returns

lhs - rhs

method OptionUnsafe<T> product <NUM, T> (OptionUnsafe<T> lhs, OptionUnsafe<T> rhs) Source #

where NUM : struct, Num<T>

method OptionUnsafe<T> divide <NUM, T> (OptionUnsafe<T> lhs, OptionUnsafe<T> rhs) Source #

where NUM : struct, Num<T>

Divide the Ts

Parameters

param lhs

Left-hand side of the operation

param rhs

Right-hand side of the operation

returns

lhs / rhs

method OptionUnsafe<T> add <NUM, T> (OptionUnsafe<T> lhs, OptionUnsafe<T> rhs) Source #

where NUM : struct, Num<T>

Add the Ts

Parameters

param lhs

Left-hand side of the operation

param rhs

Right-hand side of the operation

returns

lhs / rhs

method bool isSome <T> (OptionUnsafe<T> value) Source #

Check if OptionUnsafe is in a Some state

Parameters

type T

T

param value

OptionUnsafe

returns

True if value is in a Some state

method bool isNone <T> (OptionUnsafe<T> value) Source #

Check if OptionUnsafe is in a None state

Parameters

type T

T

param value

OptionUnsafe

returns

True if value is in a None state

method OptionUnsafe<T> SomeUnsafe <T> (T value) Source #

Create a Some of T (OptionUnsafe<T>)

Parameters

type T

T

param value

Non-null value to be made optional

returns

OptionUnsafe in a Some state or throws ValueIsNullException if isnull(value).

method OptionUnsafe<T> SomeUnsafe <T> (Func<Unit, T> f) Source #

Create a lazy Some of T (OptionUnsafe<T>)

Parameters

type T

T

param value

Non-null value to be made optional

returns

Option in a Some state or throws ValueIsNullException if isnull(value).

method Unit ifSomeUnsafe <T> (OptionUnsafe<T> option, Action<T> Some) Source #

Invokes the action if OptionUnsafe is in the Some state, otherwise nothing happens.

Parameters

param f

Action to invoke if OptionUnsafe is in the Some state

method T ifNoneUnsafe <T> (OptionUnsafe<T> option, Func<T> None) Source #

Returns the result of invoking the None() operation if the optional is in a None state, otherwise the bound Some(x) value is returned.

Will not accept a null return value from the None operation

Parameters

param None

Operation to invoke if the structure is in a None state

returns

Tesult of invoking the None() operation if the optional is in a None state, otherwise the bound Some(x) value is returned.

method T ifNoneUnsafe <T> (OptionUnsafe<T> option, T noneValue) Source #

Returns the noneValue if the optional is in a None state, otherwise the bound Some(x) value is returned.

Will not accept a null noneValue

Parameters

param noneValue

Value to return if in a None state

returns

noneValue if the optional is in a None state, otherwise the bound Some(x) value is returned

method R matchUnsafe <T, R> (OptionUnsafe<T> option, Func<T, R> Some, Func<R> None) Source #

Match the two states of the OptionUnsafe and return a B, which can be null.

Parameters

type B

Return type

param Some

Some match operation. May return null.

param None

None match operation. May return null.

returns

B, or null

method Unit matchUnsafe <T> (OptionUnsafe<T> option, Action<T> Some, Action None) Source #

Match the two states of the OptionUnsafe

Parameters

param Some

Some match operation

param None

None match operation

method OptionUnsafe<B> apply <A, B> (OptionUnsafe<Func<A, B>> fab, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type FB derived from Applicative of B

method OptionUnsafe<B> apply <A, B> (Func<A, B> fab, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type FB derived from Applicative of B

method OptionUnsafe<C> apply <A, B, C> (OptionUnsafe<Func<A, B, C>> fabc, OptionUnsafe<A> fa, OptionUnsafe<B> fb) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative a to apply

param fb

Applicative b to apply

returns

Applicative of type FC derived from Applicative of C

method OptionUnsafe<C> apply <A, B, C> (Func<A, B, C> fabc, OptionUnsafe<A> fa, OptionUnsafe<B> fb) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative a to apply

param fb

Applicative b to apply

returns

Applicative of type FC derived from Applicative of C

method OptionUnsafe<Func<B, C>> apply <A, B, C> (OptionUnsafe<Func<A, B, C>> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<Func<B, C>> apply <A, B, C> (Func<A, B, C> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<Func<B, C>> apply <A, B, C> (OptionUnsafe<Func<A, Func<B, C>>> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<Func<B, C>> apply <A, B, C> (Func<A, Func<B, C>> fabc, OptionUnsafe<A> fa) Source #

Apply

Parameters

param fab

Function to apply the applicative to

param fa

Applicative to apply

returns

Applicative of type f(b -> c) derived from Applicative of Func<B, C>

method OptionUnsafe<B> action <A, B> (OptionUnsafe<A> fa, OptionUnsafe<B> fb) Source #

Evaluate fa, then fb, ignoring the result of fa

Parameters

param fa

Applicative to evaluate first

param fb

Applicative to evaluate second and then return

returns

Applicative of type Option

method S fold <S, A> (OptionUnsafe<A> option, S state, Func<S, A, S> folder) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param folder

Folder function, applied if OptionUnsafe is in a Some state

returns

The aggregate state

method S bifold <S, A> (OptionUnsafe<A> option, S state, Func<S, A, S> Some, Func<S, S> None) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param Some

Folder function, applied if OptionUnsafe is in a Some state

param None

Folder function, applied if OptionUnsafe is in a None state

returns

The aggregate state

method S bifold <S, A> (OptionUnsafe<A> option, S state, Func<S, A, S> Some, Func<S, Unit, S> None) Source #

OptionUnsafe types are like lists of 0 or 1 items, and therefore follow the same rules when folding.

In the case of lists, 'Fold', when applied to a binary operator, a starting value(typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

Note that, since the head of the resulting expression is produced by an application of the operator to the first element of the list, 'Fold' can produce a terminating expression from an infinite list.

Parameters

type S

Aggregate state type

param state

Initial state

param Some

Folder function, applied if OptionUnsafe is in a Some state

param None

Folder function, applied if OptionUnsafe is in a None state

returns

The aggregate state

method bool forall <A> (OptionUnsafe<A> option, Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

Parameters

param pred

Predicate to apply

returns

If the OptionUnsafe is in a None state then True is returned (because the predicate applies for-all values). If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the predicate supplied.

method bool biforall <A> (OptionUnsafe<A> option, Func<A, bool> Some, Func<Unit, bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param Some

Predicate to apply if in a Some state

param None

Predicate to apply if in a None state

returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method bool biforall <A> (OptionUnsafe<A> option, Func<A, bool> Some, Func<bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param Some

Predicate to apply if in a Some state

param None

Predicate to apply if in a None state

returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method int count <A> (OptionUnsafe<A> option) Source #

Return the number of bound values in this structure:

None = 0

Some = 1

Parameters

returns

method bool exists <A> (OptionUnsafe<A> option, Func<A, bool> pred) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param pred

Predicate to apply

returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method bool biexists <A> (OptionUnsafe<A> option, Func<A, bool> Some, Func<Unit, bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param Some

Predicate to apply if in a Some state

param None

Predicate to apply if in a None state

returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method bool biexists <A> (OptionUnsafe<A> option, Func<A, bool> Some, Func<bool> None) Source #

Apply a predicate to the bound value. If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

Parameters

param Some

Predicate to apply if in a Some state

param None

Predicate to apply if in a None state

returns

If the OptionUnsafe is in a None state then True is returned if invoking None returns True. If the OptionUnsafe is in a Some state the value is the result of running applying the bound value to the Some predicate supplied.

method OptionUnsafe<B> map <A, B> (OptionUnsafe<A> option, Func<A, B> f) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param f

Projection function

returns

Mapped functor

method OptionUnsafe<B> bimap <A, B> (OptionUnsafe<A> option, Func<A, B> Some, Func<B> None) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param Some

Projection function

param None

Projection function

returns

Mapped functor

method OptionUnsafe<B> bimap <A, B> (OptionUnsafe<A> option, Func<A, B> Some, Func<Unit, B> None) Source #

Projection from one value to another

Parameters

type B

Resulting functor value type

param Some

Projection function

param None

Projection function

returns

Mapped functor

method OptionUnsafe<Func<T2, R>> parmap <T1, T2, R> (OptionUnsafe<T1> option, Func<T1, T2, R> mapper) Source #

Partial application map

method OptionUnsafe<Func<T2, Func<T3, R>>> parmap <T1, T2, T3, R> (OptionUnsafe<T1> option, Func<T1, T2, T3, R> mapper) Source #

Partial application map

method OptionUnsafe<T> filter <T> (OptionUnsafe<T> option, Func<T, bool> pred) Source #

Apply a predicate to the bound value (if in a Some state)

Parameters

param pred

Predicate to apply

returns

Some(x) if the OptionUnsafe is in a Some state and the predicate returns True. None otherwise.

method OptionUnsafe<R> bind <T, R> (OptionUnsafe<T> option, Func<T, OptionUnsafe<R>> binder) Source #

Monadic bind operation

method IEnumerable<R> matchUnsafe <T, R> (IEnumerable<OptionUnsafe<T>> list, Func<T, IEnumerable<R>> Some, Func<IEnumerable<R>> None ) Source #

Match the two states of the list of OptionUnsafes

Parameters

param Some

Some match operation

param None

None match operation

method IEnumerable<R> matchUnsafe <T, R> (IEnumerable<OptionUnsafe<T>> list, Func<T, IEnumerable<R>> Some, IEnumerable<R> None ) Source #

Match the two states of the list of OptionUnsafes

Parameters

param Some

Some match operation

param None

None match operation

method IEnumerable<T> somes <T> (IEnumerable<OptionUnsafe<T>> list) Source #

Extracts from a list of 'OptionUnsafe' all the 'Some' elements. All the 'Some' elements are extracted in order.

method Lst<T> toList <T> (OptionUnsafe<T> option) Source #

Convert the OptionUnsafe to an immutable list of zero or one items

Parameters

returns

An immutable list of zero or one items

method Arr<T> toArray <T> (OptionUnsafe<T> option) Source #

Convert the OptionUnsafe to an enumerable of zero or one items

Parameters

returns

An enumerable of zero or one items