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

@@ -4,9 +4,9 @@ import "iter"
type Set[T comparable] map[T]bool
func (s *Set[T]) Add(items ...T) {
func (s Set[T]) Add(items ...T) {
for _, item := range items {
(*s)[item] = true
s[item] = true
}
}
@@ -14,14 +14,14 @@ func (s Set[T]) Has(item T) bool {
return s[item]
}
func (s *Set[T]) Remove(items ...T) {
func (s Set[T]) Remove(items ...T) {
for _, item := range items {
delete(*s, item)
delete(s, item)
}
}
func (s *Set[T]) Merge(o *Set[T]) {
for item := range *o {
func (s Set[T]) Merge(o Set[T]) {
for item := range o {
s.Add(item)
}
}
@@ -46,8 +46,8 @@ func (s Set[T]) Items() iter.Seq[T] {
}
}
func New[T comparable](items ...T) *Set[T] {
result := &Set[T]{}
func New[T comparable](items ...T) Set[T] {
result := Set[T]{}
for _, item := range items {
result.Add(item)