From 5cde23f8698e7cdde220f30504b339b7237fd5f2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 14 Aug 2003 09:49:31 +0000 Subject: [PATCH] * Function() takes a list of formals. --- src/fix.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/fix.cc b/src/fix.cc index dd02d7538..5405190f3 100644 --- a/src/fix.cc +++ b/src/fix.cc @@ -53,10 +53,18 @@ static Expr substExpr(string x, Expr rep, Expr e) else return e; - if (ATmatch(e, "Function(, )", &s, &e2)) - if (x == s) - return e; - /* !!! unfair substitutions */ + ATermList formals; + if (ATmatch(e, "Function([], )", &formals, &e2)) { + while (!ATisEmpty(formals)) { + if (!ATmatch(ATgetFirst(formals), "", &s)) + throw badTerm("not a list of formals", (ATerm) formals); + if (x == (string) s) + return e; + formals = ATgetNext(formals); + } + } + + /* ??? unfair substitutions? */ /* Generically substitute in subterms. */ @@ -332,6 +340,8 @@ static Expr evalExpr2(EvalState & state, Expr e) static Expr evalExpr(EvalState & state, Expr e) { + Nest nest(lvlVomit, format("evaluating expression: %1%") % printTerm(e)); + /* Consult the memo table to quickly get the normal form of previously evaluated expressions. */ NormalForms::iterator i = state.normalForms.find(e);