export type Result = | { readonly success: true; readonly data: T } | { readonly success: false; readonly error: E }; export const ok = (data: T): Result => ({ success: true, data }); export const err = (error: E): Result => ({ success: false, error }); export const map = (r: Result, f: (t: T) => U): Result => r.success ? ok(f(r.data)) : r;