refactor: make lambda expression types immutable

- Change Abstraction, Application, and Variable to use private fields with getter methods
- Return value types instead of pointers from constructors
- Update all type switches to match value types instead of pointer types
- Remove pointer equality optimizations (not applicable with immutable values)
- Return empty set instead of nil from GetFreeVariables default case
This commit is contained in:
2026-01-17 16:29:24 -05:00
parent c2aa77cb92
commit 7318c0dac4
21 changed files with 191 additions and 255 deletions

View File

@@ -7,7 +7,7 @@ import (
"path/filepath"
"runtime/pprof"
"git.maximhutz.com/max/lambda/pkg/reducer"
"git.maximhutz.com/max/lambda/pkg/interpreter"
)
// 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 reducer.Reducer) *Performance {
func NewPerformance(file string, process interpreter.Interpreter) *Performance {
plugin := &Performance{File: file}
process.On(reducer.StartEvent, plugin.Start)
process.On(reducer.StopEvent, plugin.Stop)
process.On(interpreter.StartEvent, plugin.Start)
process.On(interpreter.StopEvent, plugin.Stop)
return plugin
}