public static Arr <Option <B> > Traverse <A, B>(this Option <Arr <A> > ma, Func <A, B> f) => ma.Match( None: () => Array(Option <B> .None), Some: xs => xs.Map(x => Some(f(x))));
public static IEnumerable <Option <B> > Traverse <A, B>(this Option <IEnumerable <A> > ma, Func <A, B> f) => ma.Match( None: () => new[] { Option <B> .None }, Some: xs => xs.Map(x => Some(f(x))));
public static Que <Option <B> > Traverse <A, B>(this Option <Que <A> > ma, Func <A, B> f) => ma.Match( None: () => Queue(Option <B> .None), Some: xs => xs.Map(x => Some(f(x))));
internal static IActorDispatch GetRemoteDispatcher(ProcessId pid) => cluster.Match <IActorDispatch>( Some: c => new ActorDispatchRemote(pid, c), None: () => new ActorDispatchNotExist(pid));
public static Unit match <T>(Option <T> option, Action <T> Some, Action None) => option.Match(Some, None);
public static Stck <Option <B> > Traverse <A, B>(this Option <Stck <A> > ma, Func <A, B> f) => ma.Match( None: () => Stack(Option <B> .None), Some: xs => xs.Map(x => Some(f(x))));
public static R match <T, R>(Option <T> option, Func <T, R> Some, Func <R> None) => option.Match(Some, None);
public static Lst <Option <B> > Traverse <A, B>(this Option <Lst <A> > ma, Func <A, B> f) => ma.Match( None: () => List(Option <B> .None), Some: xs => xs.Map(x => Some(f(x))));
internal IActorDispatch GetRemoteDispatcher(ProcessId pid) => cluster.Match <IActorDispatch>( Some: c => new ActorDispatchRemote(pid, c, ActorContext.SessionId), None: () => new ActorDispatchNotExist(pid));
public static Identity <Option <B> > Traverse <A, B>(this Option <Identity <A> > ma, Func <A, B> f) => ma.Match( Some: x => new Identity <Option <B> >(f(x.Value)), None: () => new Identity <Option <B> >(Option <B> .None));
public R Match <R>(Func <A, R> Some, Func <R> None, Func <Exception, R> Fail) => IsFaulted ? Fail(Exception ?? BottomException.Default) : Value.Match(Some, None);