export interface Err {
readonly _tag: 'Err';
readonly ok?: A;
readonly err: E;
}
export interface Ok {
readonly _tag: 'Ok';
readonly ok: A;
readonly err?: E;
}
export type Result = Ok | Err;
export type OkOf = R extends Result ? A : never;
export type ErrOf = R extends Result ? E : never;
export type ResultOf = R extends Ok ? Result : R extends Err ? Result : R extends Result ? Result : never;