import { Union } from "./Types.ts"; import { union_type, TypeInfo } from "./Reflection.ts"; import { int32 } from "./Int32.ts"; import { MutableArray, equals } from "./Util.ts"; import { FSharpList, empty, singleton } from "./List.ts"; import { Option, some } from "./Option.ts"; export type FSharpResult$2_$union = | FSharpResult$2 | FSharpResult$2 export type FSharpResult$2_$cases = { 0: ["Ok", [T]], 1: ["Error", [TError]] } export function FSharpResult$2_Ok(ResultValue: T) { return new FSharpResult$2(0, [ResultValue]); } export function FSharpResult$2_Error$(ErrorValue: TError) { return new FSharpResult$2(1, [ErrorValue]); } export class FSharpResult$2> extends Union[Tag][0]> { constructor(tag: Tag, fields: FSharpResult$2_$cases[Tag][1]) { super(); this.tag = tag; this.fields = fields; } readonly tag: Tag; readonly fields: FSharpResult$2_$cases[Tag][1]; cases() { return ["Ok", "Error"]; } } export function FSharpResult$2_$reflection(gen0: TypeInfo, gen1: TypeInfo): TypeInfo { return union_type("FSharp.Core.FSharpResult`2", [gen0, gen1], FSharpResult$2, () => [[["ResultValue", gen0]], [["ErrorValue", gen1]]]); } export function Result_Map(mapping: ((arg0: a) => b), result: FSharpResult$2_$union): FSharpResult$2_$union { if ((result.tag as int32) === /* Ok */ 0) { return FSharpResult$2_Ok(mapping(result.fields[0] as a)); } else { return FSharpResult$2_Error$(result.fields[0] as c); } } export function Result_MapError(mapping: ((arg0: a) => b), result: FSharpResult$2_$union): FSharpResult$2_$union { if ((result.tag as int32) === /* Ok */ 0) { return FSharpResult$2_Ok(result.fields[0] as c); } else { return FSharpResult$2_Error$(mapping(result.fields[0] as a)); } } export function Result_Bind(binder: ((arg0: a) => FSharpResult$2_$union), result: FSharpResult$2_$union): FSharpResult$2_$union { if ((result.tag as int32) === /* Ok */ 0) { return binder(result.fields[0] as a); } else { return FSharpResult$2_Error$(result.fields[0] as c); } } export function Result_IsOk(result: FSharpResult$2_$union): boolean { if ((result.tag as int32) === /* Ok */ 0) { return true; } else { return false; } } export function Result_IsError(result: FSharpResult$2_$union): boolean { if ((result.tag as int32) === /* Ok */ 0) { return false; } else { return true; } } export function Result_Contains(value: a, result: FSharpResult$2_$union): boolean { if ((result.tag as int32) === /* Ok */ 0) { return equals(result.fields[0] as a, value); } else { return false; } } export function Result_Count(result: FSharpResult$2_$union): int32 { if ((result.tag as int32) === /* Ok */ 0) { return 1; } else { return 0; } } export function Result_DefaultValue(defaultValue: a, result: FSharpResult$2_$union): a { if ((result.tag as int32) === /* Ok */ 0) { return result.fields[0] as a; } else { return defaultValue; } } export function Result_DefaultWith(defThunk: ((arg0: b) => a), result: FSharpResult$2_$union): a { if ((result.tag as int32) === /* Ok */ 0) { return result.fields[0] as a; } else { return defThunk(result.fields[0] as b); } } export function Result_Exists(predicate: ((arg0: a) => boolean), result: FSharpResult$2_$union): boolean { if ((result.tag as int32) === /* Ok */ 0) { return predicate(result.fields[0] as a); } else { return false; } } export function Result_Fold(folder: ((arg0: s, arg1: a) => s), state: s, result: FSharpResult$2_$union): s { if ((result.tag as int32) === /* Ok */ 0) { return folder(state, result.fields[0] as a); } else { return state; } } export function Result_FoldBack(folder: ((arg0: a, arg1: s) => s), result: FSharpResult$2_$union, state: s): s { if ((result.tag as int32) === /* Ok */ 0) { return folder(result.fields[0] as a, state); } else { return state; } } export function Result_ForAll(predicate: ((arg0: a) => boolean), result: FSharpResult$2_$union): boolean { if ((result.tag as int32) === /* Ok */ 0) { return predicate(result.fields[0] as a); } else { return true; } } export function Result_Iterate(action: ((arg0: a) => void), result: FSharpResult$2_$union): void { if ((result.tag as int32) === /* Ok */ 0) { action(result.fields[0] as a); } } export function Result_ToArray(result: FSharpResult$2_$union): MutableArray { if ((result.tag as int32) === /* Ok */ 0) { return [result.fields[0] as a]; } else { return []; } } export function Result_ToList(result: FSharpResult$2_$union): FSharpList { if ((result.tag as int32) === /* Ok */ 0) { return singleton(result.fields[0] as a); } else { return empty(); } } export function Result_ToOption(result: FSharpResult$2_$union): Option { if ((result.tag as int32) === /* Ok */ 0) { return some(result.fields[0] as a); } else { return undefined; } } export function Result_ToValueOption(result: FSharpResult$2_$union): Option { if ((result.tag as int32) === /* Ok */ 0) { return some(result.fields[0] as a); } else { return undefined; } }