summaryrefslogtreecommitdiff
path: root/src/lang/ks-lang/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lang/ks-lang/index.ts')
-rw-r--r--src/lang/ks-lang/index.ts7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lang/ks-lang/index.ts b/src/lang/ks-lang/index.ts
index c60203f..c9c7405 100644
--- a/src/lang/ks-lang/index.ts
+++ b/src/lang/ks-lang/index.ts
@@ -7,12 +7,17 @@ import {
EvalError,
CallFn,
EmptyStackFrame,
+ ASTNode,
} from "../ts-lang";
+export type TransformArgs<Args extends readonly ASTNode[]> = {
+ [Idx in keyof Args]: any;
+};
+
export const createFn = <Program extends string>(
program: Program
): Evaluate<Parse<Lex<Program>>> extends [infer ProgramFn extends FnPrim]
- ? <const Args extends any[]>(
+ ? <const Args extends TransformArgs<ProgramFn["args"]>>(
...args: Args
) => CallFn<ProgramFn, Args, EmptyStackFrame>
: EvalError<"Cannot create a function from a program that does not eval to a function"> => {