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

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