lambda.d.ts (2099B)
1 import { LocationRange } from "peggy"; 2 import { ASTNode } from "../ast/parse.js"; 3 import { Expression } from "../expression/index.js"; 4 import { VDomain, Value } from "../value/index.js"; 5 import { ReducerContext } from "./context.js"; 6 import { Stack } from "./stack.js"; 7 import { FnDefinition } from "../library/registry/fnDefinition.js"; 8 import { FRType } from "../library/registry/frTypes.js"; 9 export type UserDefinedLambdaParameter = { 10 name: string; 11 domain?: VDomain; 12 }; 13 type LambdaBody = (args: Value[], context: ReducerContext) => Value; 14 export declare abstract class BaseLambda { 15 body: LambdaBody; 16 constructor(body: LambdaBody); 17 abstract readonly type: string; 18 abstract getName(): string; 19 abstract toString(): string; 20 abstract parameterString(): string; 21 abstract parameterCounts(): number[]; 22 abstract parameterCountString(): string; 23 callFrom(args: Value[], context: ReducerContext, ast: ASTNode | undefined): Value; 24 call(args: Value[], context: ReducerContext): Value; 25 } 26 export declare class UserDefinedLambda extends BaseLambda { 27 parameters: UserDefinedLambdaParameter[]; 28 location: LocationRange; 29 name?: string; 30 readonly type = "UserDefinedLambda"; 31 constructor(name: string | undefined, parameters: UserDefinedLambdaParameter[], stack: Stack, body: Expression, location: LocationRange); 32 getName(): string; 33 _getParameterNames(): string[]; 34 parameterString(): string; 35 toString(): string; 36 parameterCounts(): number[]; 37 parameterCountString(): string; 38 } 39 export declare class BuiltinLambda extends BaseLambda { 40 name: string; 41 readonly type = "BuiltinLambda"; 42 _definitions: FnDefinition[]; 43 constructor(name: string, signatures: FnDefinition[]); 44 getName(): string; 45 toString(): string; 46 parameterString(): string; 47 parameterCounts(): number[]; 48 parameterCountString(): string; 49 signatures(): FRType<unknown>[][]; 50 _call(args: Value[], context: ReducerContext): Value; 51 } 52 export type Lambda = UserDefinedLambda | BuiltinLambda; 53 export {}; 54 //# sourceMappingURL=lambda.d.ts.map