package normalorder import ( "git.maximhutz.com/max/lambda/pkg/engine" "git.maximhutz.com/max/lambda/pkg/lambda" ) type Process struct { expr lambda.Expression } func (e Process) Get() (lambda.Expression, error) { return e.expr, nil } func (e *Process) Set(l lambda.Expression) error { e.expr = l return nil } func (e *Process) Step(i int) bool { for range i { next, reduced := ReduceOnce(e.expr) if !reduced { return false } e.expr = next } 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)