From a131f36f893c13a30cb9e9d6cc203d5b28bed1cf Mon Sep 17 00:00:00 2001 From: portnov Date: Sun, 1 Jun 2008 15:13:16 +0000 Subject: [PATCH] Eta-reduction added. --- data2.py | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/data2.py b/data2.py index bfe099e..b0f5654 100644 --- a/data2.py +++ b/data2.py @@ -261,10 +261,18 @@ class Lambda(Term): return l def eval(self,excl_vars=Set()): + self = self.eval_vars(excl_vars + Set(self.var)) + if type(self) != Lambda: + return self return Lambda(self.var,self.expr.eval(excl_vars + Set(self.var))) def eval_vars(self,excl_vars=Set()): - return Lambda(self.var, self.expr.eval_vars(excl_vars + Set(self.var))) + l = Lambda(self.var, self.expr.eval_vars(excl_vars + Set(self.var))) + # eta-reduction + if type(l.expr)==Expr and l.expr.op=='@' and str(l.expr.a2)==str(l.var): + return l.expr.a1 + else: + return l def apply(self,expr,excl_vars=Set()): old = copy(self) -- 1.7.2.3