aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/eval.ts5
-rw-r--r--stdlib/sys.ts3
2 files changed, 8 insertions, 0 deletions
diff --git a/src/eval.ts b/src/eval.ts
index 19a5557..c34e911 100644
--- a/src/eval.ts
+++ b/src/eval.ts
@@ -116,6 +116,11 @@ export const evaluateType = async (
return [resultKey]
},
+ Exit: async () => {
+ const exitCode = args[0] && ctx.getTypeValue(args[0])
+ process.exit(exitCode)
+ },
+
ReadLine: async () => {
const line = await readLineFromStdin()
const [resultKey, _] = ctx.createResult(`${JSON.stringify(line)}`)
diff --git a/stdlib/sys.ts b/stdlib/sys.ts
index e170c6c..68f713d 100644
--- a/stdlib/sys.ts
+++ b/stdlib/sys.ts
@@ -8,3 +8,6 @@ export interface JsExpr<_Expr extends string> extends Effect<any> {}
export interface DefineEffect<_Name extends string, _Func extends string>
extends Effect {}
+
+export interface Exit<_ extends number | undefined = undefined> extends Effect {}
+