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:
2026-01-18 15:11:04 -05:00
parent e85cf7ceff
commit d715d38e9e
26 changed files with 200 additions and 196 deletions

View File

@@ -3,17 +3,17 @@ package plugins
import (
"log/slog"
"git.maximhutz.com/max/lambda/pkg/interpreter"
"git.maximhutz.com/max/lambda/pkg/runtime"
)
type Logs struct {
logger *slog.Logger
reducer interpreter.Interpreter
reducer runtime.Runtime
}
func NewLogs(logger *slog.Logger, r interpreter.Interpreter) *Logs {
func NewLogs(logger *slog.Logger, r runtime.Runtime) *Logs {
plugin := &Logs{logger, r}
r.On(interpreter.StepEvent, plugin.Step)
r.On(runtime.StepEvent, plugin.Step)
return plugin
}

View File

@@ -5,19 +5,19 @@ package plugins
import (
"fmt"
"git.maximhutz.com/max/lambda/pkg/interpreter"
"git.maximhutz.com/max/lambda/pkg/runtime"
)
// Track the reductions made by a reduction process.
type Explanation struct {
reducer interpreter.Interpreter
reducer runtime.Runtime
}
// Attaches a new explanation tracker to a reducer.
func NewExplanation(r interpreter.Interpreter) *Explanation {
func NewExplanation(r runtime.Runtime) *Explanation {
plugin := &Explanation{reducer: r}
r.On(interpreter.StartEvent, plugin.Start)
r.On(interpreter.StepEvent, plugin.Step)
r.On(runtime.StartEvent, plugin.Start)
r.On(runtime.StepEvent, plugin.Step)
return plugin
}

View File

@@ -7,7 +7,7 @@ import (
"path/filepath"
"runtime/pprof"
"git.maximhutz.com/max/lambda/pkg/interpreter"
"git.maximhutz.com/max/lambda/pkg/runtime"
)
// Observes a reduction process, and publishes a CPU performance profile on
@@ -19,10 +19,10 @@ type Performance struct {
}
// Create a performance tracker that outputs a profile to "file".
func NewPerformance(file string, process interpreter.Interpreter) *Performance {
func NewPerformance(file string, process runtime.Runtime) *Performance {
plugin := &Performance{File: file}
process.On(interpreter.StartEvent, plugin.Start)
process.On(interpreter.StopEvent, plugin.Stop)
process.On(runtime.StartEvent, plugin.Start)
process.On(runtime.StopEvent, plugin.Stop)
return plugin
}

View File

@@ -6,7 +6,7 @@ import (
"time"
"git.maximhutz.com/max/lambda/internal/statistics"
"git.maximhutz.com/max/lambda/pkg/interpreter"
"git.maximhutz.com/max/lambda/pkg/runtime"
)
// An observer, to track reduction performance.
@@ -16,11 +16,11 @@ type Statistics struct {
}
// Create a new reduction performance Statistics.
func NewStatistics(r interpreter.Interpreter) *Statistics {
func NewStatistics(r runtime.Runtime) *Statistics {
plugin := &Statistics{}
r.On(interpreter.StartEvent, plugin.Start)
r.On(interpreter.StepEvent, plugin.Step)
r.On(interpreter.StopEvent, plugin.Stop)
r.On(runtime.StartEvent, plugin.Start)
r.On(runtime.StepEvent, plugin.Step)
r.On(runtime.StopEvent, plugin.Stop)
return plugin
}