// Package runtime provides the abstract Reducer interface for all expression // reduction strategies. package runtime import ( "git.maximhutz.com/max/lambda/pkg/emitter" "git.maximhutz.com/max/lambda/pkg/repr" ) // Runtime 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. // // Runtimes also implement the Emitter interface to allow plugins to observe // reduction lifecycle events (Start, Step, Stop). type Runtime interface { emitter.Emitter[Event] // Run a single step. Returns whether the runtime is complete or not. Step() bool // Run until completion. Run() // Copy the state of the runtime. Expression() repr.Repr }