package interpreter type environment struct { values map[string]any } func newEnvironment() *environment { return &environment{values: make(map[string]any)} } func (e *environment) define(name string, value any) { e.values[name] = value } func (e *environment) get(name string) any { value, ok := e.values[name] if !ok { panic("Undefined variable '" + name + "'.") } return value }