export type Result = { tag: "ok"; value: A } | { tag: "error"; error: E }
export const Result = {
ok(value: A): Result {
return { tag: "ok", value }
},
err(error: E): Result {
return { tag: "error", error }
},
map(result: Result, f: (x: A) => B): Result {
switch (result.tag) {
case "ok":
return { tag: "ok", value: f(result.value) }
case "error":
return { tag: "error", error: result.error }
}
},
}