js-slang
Version:
Javascript-based implementations of Source, written in Typescript
14 lines (13 loc) • 487 B
TypeScript
import type { Node } from '../types';
import type { StepperExpression, StepperPattern } from './nodes';
export interface StepperBaseNode {
type: Node['type'];
isContractible(): boolean;
isOneStepPossible(): boolean;
contract(): StepperBaseNode;
oneStep(): StepperBaseNode;
substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode;
freeNames(): string[];
allNames(): string[];
rename(before: string, after: string): StepperBaseNode;
}