summaryrefslogtreecommitdiff
path: root/src/lang/ks-lang
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2025-11-04 20:23:41 -0800
committerKai Stevenson <kai@kaistevenson.com>2025-11-04 20:23:41 -0800
commitf9f52cd6081036fa98e86a537c925f7a8e924df7 (patch)
tree187d37b2e8cc073863dfb4cc082ba42b660b0041 /src/lang/ks-lang
parent47ea3a63474e40c12164c1ebf4eec3121c3b217c (diff)
strict arg count for createFn
Diffstat (limited to 'src/lang/ks-lang')
-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"> => {