aboutsummaryrefslogtreecommitdiff
path: root/src/utils/adt.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/adt.ts')
-rw-r--r--src/utils/adt.ts6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/utils/adt.ts b/src/utils/adt.ts
index c19398b..e9a6c51 100644
--- a/src/utils/adt.ts
+++ b/src/utils/adt.ts
@@ -1,11 +1,9 @@
type TagValue<T, N> = T extends Tag<N, infer V> ? V : never
export const match =
- <R, T extends Tag<string, any>>(pattern: {
+ <R, T extends Tag<string, any>>(tag: T, pattern: {
[key in T['tag'] | '_']?: (v: TagValue<T, key>) => R
- }) =>
- (tag: T): R =>
- ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value)
+ }): R => ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value)
type Tag<N, V> = { tag: N; value: V }
export type Enum<T> = { [N in keyof T]: Tag<N, T[N]> }[keyof T]