diff options
Diffstat (limited to 'stdlib')
| -rw-r--r-- | stdlib/effect.ts | 2 | ||||
| -rw-r--r-- | stdlib/exception.ts | 4 | ||||
| -rw-r--r-- | stdlib/util.ts | 9 |
3 files changed, 10 insertions, 5 deletions
diff --git a/stdlib/effect.ts b/stdlib/effect.ts index 0662d00..341a620 100644 --- a/stdlib/effect.ts +++ b/stdlib/effect.ts @@ -7,7 +7,7 @@ export interface Kind1<Inp = unknown, Out = unknown> { return: Out } -type Func<Inp = unknown, Out = unknown> +export type Func<Inp = unknown, Out = unknown> = Kind1<Inp, Out> | (<_T extends Inp>() => Out) diff --git a/stdlib/exception.ts b/stdlib/exception.ts index ddb980c..d137a87 100644 --- a/stdlib/exception.ts +++ b/stdlib/exception.ts @@ -1,5 +1,5 @@ -import { Effect, Kind1 } from './effect' +import { Effect, Func } from './effect' -export interface Try<_E extends Effect, _Catch extends Kind1> extends Effect {} +export interface Try<_E extends Effect, _Catch extends Func> extends Effect {} export interface Throw<_E> extends Effect {} diff --git a/stdlib/util.ts b/stdlib/util.ts index 20a41fb..cd25d7b 100644 --- a/stdlib/util.ts +++ b/stdlib/util.ts @@ -2,12 +2,17 @@ import { Kind1 } from './effect' export type Let<f extends (...args: any) => any> = ReturnType<f> -export type Apply<K extends Kind1, Val> = (K & { input: Val })['return'] +export type ApplyK<K extends Kind1, Val> = (K & { input: Val })['return'] -export interface Id extends Kind1 { +export type Id = <T>() => T +export interface IdK extends Kind1 { return: this['input'] } +export interface ConstK<Val> extends Kind1<unknown, Val> { + return: Val +} + type ADTDescr = { _type: string; value: any } interface ADTConstructor<A extends ADTDescr> extends Kind1<A['value']> { |
