refactor: rename interpreter to runtime and use receiver methods
- Rename pkg/interpreter to pkg/runtime - Move ReduceOnce to new pkg/normalorder package - Convert standalone functions (Substitute, Rename, GetFree, IsFree) to receiver methods on concrete expression types - Change Set from pointer receivers to value receivers - Update all references from interpreter to runtime terminology Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
27
pkg/runtime/runtime.go
Normal file
27
pkg/runtime/runtime.go
Normal file
@@ -0,0 +1,27 @@
|
||||
// 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/expr"
|
||||
)
|
||||
|
||||
// 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() expr.Expression
|
||||
}
|
||||
Reference in New Issue
Block a user