Update call sites to match the new Reducer interface where the expression is passed to the constructor and Reduce() takes no arguments.
28 lines
914 B
Go
28 lines
914 B
Go
// 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
|
|
}
|