diff options
Diffstat (limited to '')
| -rw-r--r-- | src/utils/result.ts | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/utils/result.ts b/src/utils/result.ts index c0120b8..39a7fe6 100644 --- a/src/utils/result.ts +++ b/src/utils/result.ts @@ -1,14 +1,18 @@ -import { Enum, constructors, match } from "./adt"; +import { Enum, constructors, match } from './adt' -export type Result<V, E> = Enum<{ Ok: V, Err: E }> +export type Result<V, E> = Enum<{ Ok: V; Err: E }> export const Result = constructors<Result<any, any>>() -export const mapResult = <A, B, E>(res: Result<A, E>, fn: (_: A) => B): Result<B, E> => - chainResult(res, a => Result.Ok(fn(a))) +export const mapResult = <A, B, E>( + res: Result<A, E>, + fn: (_: A) => B, +): Result<B, E> => chainResult(res, a => Result.Ok(fn(a))) -export const chainResult = <A, B, E>(res: Result<A, E>, fn: (_: A) => Result<B, E>): Result<B, E> => +export const chainResult = <A, B, E>( + res: Result<A, E>, + fn: (_: A) => Result<B, E>, +): Result<B, E> => match(res, { Ok: a => fn(a), Err: e => Result.Err(e), - }); - + }) |
