feat: engine -> process, engine is now a factory for a proces

This commit is contained in:
2026-02-05 14:20:30 -05:00
parent 5f6a9f9663
commit 22e8a99362
7 changed files with 90 additions and 41 deletions

View File

@@ -1,6 +1,10 @@
package engine
type Engine[T any] interface {
Load() Process[T]
}
type Process[T any] interface {
Get() (T, error)
Set(T) error
Step(int) bool

View File

@@ -5,20 +5,20 @@ import (
"git.maximhutz.com/max/lambda/pkg/lambda"
)
type Engine struct {
type Process struct {
expr lambda.Expression
}
func (e Engine) Get() (lambda.Expression, error) {
func (e Process) Get() (lambda.Expression, error) {
return e.expr, nil
}
func (e *Engine) Set(l lambda.Expression) error {
func (e *Process) Set(l lambda.Expression) error {
e.expr = l
return nil
}
func (e *Engine) Step(i int) bool {
func (e *Process) Step(i int) bool {
for range i {
next, reduced := ReduceOnce(e.expr)
if !reduced {
@@ -31,4 +31,12 @@ func (e *Engine) Step(i int) bool {
return true
}
type Engine struct {
}
func (e Engine) Load() engine.Process[lambda.Expression] {
return &Process{}
}
var _ engine.Process[lambda.Expression] = (*Process)(nil)
var _ engine.Engine[lambda.Expression] = (*Engine)(nil)