export interface EffectAtom { output: T } export type Effect = EffectAtom[] export interface PutString<_ extends string> extends EffectAtom { } export interface Print<_ extends any> extends EffectAtom { } export interface Debug<_ extends string, T> extends EffectAtom { } export interface WriteFile<_Path extends string, _Content extends string> extends EffectAtom { } export interface ReadFile<_Path extends string> extends EffectAtom { } export interface GetEnv<_Name extends string> extends EffectAtom { } export interface GetArgs extends EffectAtom { } export interface ReadLine extends EffectAtom { } export interface JsExpr<_Expr extends string> extends EffectAtom { } export interface Program { effects: Effs, exitCode: ExitCode, } export interface Kind1 { input: Inp return: Out } export interface ChainIO extends EffectAtom { input: Eff chainTo: Fn } interface PrintK