docs: document remaining packages and simplify AST types #45

Merged
mvhutz merged 15 commits from docs/rest into main 2026-02-10 01:15:42 +00:00
2 changed files with 12 additions and 8 deletions
Showing only changes of commit 4201225ce9 - Show all commits

View File

@@ -18,9 +18,9 @@ type baseExpr struct {
data any
}
func (r baseExpr) Repr() string { return r.id }
func (e baseExpr) Repr() string { return e.id }
func (r baseExpr) Data() any { return r.data }
func (e baseExpr) Data() any { return e.data }
// NewExpr creates an Expr with the given representation name and data.
func NewExpr(id string, data any) Expr { return baseExpr{id, data} }

View File

@@ -4,28 +4,32 @@ import (
"git.maximhutz.com/max/lambda/pkg/engine"
)
// A Process is a type-erased reduction process that operates on Expr values.
type Process interface {
engine.Process[Expr]
// InType returns the name of the representation this process operates on.
InType() string
}
// A registeredProcess adapts a typed engine.Process[T] into the type-erased
// Process interface. It wraps the result of Get into an Expr.
type registeredProcess[T any] struct {
process engine.Process[T]
inType string
}
func (e registeredProcess[T]) InType() string { return e.inType }
func (p registeredProcess[T]) InType() string { return p.inType }
func (b registeredProcess[T]) Get() (Expr, error) {
s, err := b.process.Get()
func (p registeredProcess[T]) Get() (Expr, error) {
s, err := p.process.Get()
if err != nil {
return nil, err
}
return NewExpr(b.inType, s), nil
return NewExpr(p.inType, s), nil
}
func (b registeredProcess[T]) Step(i int) bool {
return b.process.Step(i)
func (p registeredProcess[T]) Step(i int) bool {
return p.process.Step(i)
}