// Package reducer provides the abstract Reducer interface for all expression // reduction strategies. package reducer 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 Reducer interface { emitter.Emitter[Event] // Reduce performs all reduction steps on the expression. // Emits StartEvent before reduction, StepEvent after each step, and // StopEvent after completion. // Returns the final reduced expression. Reduce() // Expression returns the current expression state. Expression() expr.Expression }