blob: f3ef99e5cb03b469331095bbab91aa29069622df (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
export interface Effect<T = unknown> {
output: T
}
export interface Kind1<Inp = unknown, Out = unknown> {
input: Inp
return: Out
}
export type Func<Inp = unknown, Out = unknown>
= Kind1<Inp, Out>
| (<_T extends Inp>() => Out)
export interface Bind<_Eff extends Effect, _Fn extends Func> extends Effect {}
export interface BindTo<_Name extends string, _Eff extends Effect> extends Effect {}
export interface Label<_Name extends string> extends Effect {}
export interface Seq<_Effs extends Effect[]> extends Effect {}
export interface Do<_Effs extends Effect[]> extends Effect {}
export interface Pure<V> extends Effect<V> {}
|