docs: process

This commit is contained in:
2026-02-09 18:31:01 -05:00
parent 98b327103f
commit 4201225ce9
2 changed files with 12 additions and 8 deletions

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)
}