Variable Result

Result: {
    accept: (<R>(result: R) => ((pos: number) => Result<R>));
    map: (<I, O>(fn: ((i: I) => O)) => ((result: Result<I>) => Result<O>));
    of: (<R>(val: DeSelfie<Result<R>>) => Result<R>);
    reject: ((msg: string) => (<R>(pos: number) => Result<R>));
}