// Package reducer provides the abstract Reducer interface for all expression // reduction strategies. package reducer import "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. type Reducer interface { // Reduce performs all reduction steps on the expression, calling onStep // after each reduction. // Returns the final reduced expression. Reduce(e expr.Expression, onStep func(expr.Expression)) expr.Expression }