feat: lambda is mutable

This commit is contained in:
2026-02-09 20:10:40 -05:00
parent 9d44f5433c
commit c6d7dd56ff
9 changed files with 121 additions and 123 deletions

View File

@@ -21,7 +21,7 @@ func encodeAbstraction(n *saccharine.Abstraction) lambda.Expression {
// If the function has no parameters, it is a thunk. Lambda calculus still
// requires _some_ parameter exists, so generate one.
if len(parameters) == 0 {
freeVars := result.GetFree()
freeVars := lambda.GetFree(result)
freshName := lambda.GenerateFreshName(freeVars)
parameters = append(parameters, freshName)
}
@@ -65,7 +65,7 @@ func reduceLet(s *saccharine.LetStatement, e lambda.Expression) lambda.Expressio
}
func reduceDeclare(s *saccharine.DeclareStatement, e lambda.Expression) lambda.Expression {
freshVar := lambda.GenerateFreshName(e.GetFree())
freshVar := lambda.GenerateFreshName(lambda.GetFree(e))
return lambda.Application{
Abstraction: lambda.Abstraction{Parameter: freshVar, Body: e},