diff options
| author | Kai Stevenson <kai@kaistevenson.com> | 2025-11-04 20:23:41 -0800 |
|---|---|---|
| committer | Kai Stevenson <kai@kaistevenson.com> | 2025-11-04 20:23:41 -0800 |
| commit | f9f52cd6081036fa98e86a537c925f7a8e924df7 (patch) | |
| tree | 187d37b2e8cc073863dfb4cc082ba42b660b0041 /src/lang/ks-lang/index.ts | |
| parent | 47ea3a63474e40c12164c1ebf4eec3121c3b217c (diff) | |
strict arg count for createFn
Diffstat (limited to 'src/lang/ks-lang/index.ts')
| -rw-r--r-- | src/lang/ks-lang/index.ts | 7 |
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"> => { |
