From efe0ab336144d2d965bf355db02762f5cf539c7f Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 14 Jan 2023 10:37:51 +0530 Subject: feat: adds func to try/catch --- stdlib/effect.ts | 2 +- stdlib/exception.ts | 4 ++-- stdlib/util.ts | 9 +++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) (limited to 'stdlib') 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 { return: Out } -type Func +export type Func = Kind1 | (<_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 any> = ReturnType -export type Apply = (K & { input: Val })['return'] +export type ApplyK = (K & { input: Val })['return'] -export interface Id extends Kind1 { +export type Id = () => T +export interface IdK extends Kind1 { return: this['input'] } +export interface ConstK extends Kind1 { + return: Val +} + type ADTDescr = { _type: string; value: any } interface ADTConstructor extends Kind1 { -- cgit v1.3.1