// Package interpreter provides the abstract Reducer interface for all expression // reduction strategies. package interpreter import ( "git.maximhutz.com/max/lambda/pkg/emitter" "git.maximhutz.com/max/lambda/pkg/expr" ) // Reducer defines the interface for expression reduction strategies. // Different evaluation modes (normal order, applicative order, SKI combinators, // etc.) implement this interface with their own reduction logic. // // Reducers also implement the Emitter interface to allow plugins to observe // reduction lifecycle events (Start, Step, Stop). type Interpreter interface { emitter.Emitter[Event] // Run a single step. Returns whether the interpreter is complete or not. Step() bool // Run until completion. Run() // Expression returns the current expression state. Expression() expr.Expression }