thaw-grammar
Version:
Implementations of the grammars of several programming languages, including LISP, Scheme, Prolog, and the Lambda Calculus.
31 lines • 1.67 kB
TypeScript
import { IImmutableSet } from 'thaw-common-utilities.ts';
import { ILCBetaReductionOptions, ILCExpression, ILCFunctionCall, ILCSubstitution, ILCUnifiable } from './interfaces/expression';
import { LCValueBase } from './value-base';
export declare class LCFunctionCall extends LCValueBase implements ILCFunctionCall {
readonly callee: ILCExpression;
readonly arg: ILCExpression;
constructor(callee: ILCExpression, arg: ILCExpression);
toString(): string;
containsVariableNamed(name: string): boolean;
containsBoundVariableNamed(name: string): boolean;
containsUnboundVariableNamed(name: string, boundVariableNames: IImmutableSet<string>): boolean;
substituteForUnboundVariable(name: string, value: ILCExpression): ILCExpression;
renameBoundVariable(newName: string, oldName: string): ILCExpression;
isBetaReducible(): boolean;
private betaReduceCore;
private betaReduceCallByName;
private betaReduceNormalOrder;
private betaReduceCallByValue;
private betaReduceApplicativeOrder;
private betaReduceHybridApplicativeOrder;
private betaReduceHeadSpine;
private betaReduceHybridNormalOrder;
private betaReduceThAWHackForYCombinator;
betaReduce(options?: ILCBetaReductionOptions): ILCExpression;
deltaReduce(): ILCExpression;
etaReduce(): ILCExpression;
getSetOfAllVariableNames(): IImmutableSet<string>;
applySubstitution(substitution: ILCSubstitution): ILCExpression;
unify(other: ILCUnifiable, variablesInOriginalExpr1Param?: IImmutableSet<string>, variablesInOriginalExpr2Param?: IImmutableSet<string>): ILCSubstitution | undefined;
}
//# sourceMappingURL=call.d.ts.map