diff options
| -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"> => { |
