* Strict evaluation and XML printing of lists.

This commit is contained in:
Eelco Dolstra 2006-08-24 14:03:39 +00:00
parent 943ab38a0d
commit da25d80152
2 changed files with 16 additions and 4 deletions

View File

@ -589,7 +589,6 @@ Expr strictEvalExpr(EvalState & state, Expr e)
e = evalExpr(state, e);
ATermList as;
if (matchAttrs(e, as)) {
ATermList as2 = ATempty;
for (ATermIterator i(as); i; ++i) {
@ -599,10 +598,17 @@ Expr strictEvalExpr(EvalState & state, Expr e)
}
return makeAttrs(ATreverse(as2));
}
ATermList es;
if (matchList(e, es)) {
ATermList es2 = ATempty;
for (ATermIterator i(es); i; ++i)
es2 = ATinsert(es2, strictEvalExpr(state, *i));
return makeList(ATreverse(es2));
}
ATermList formals;
ATerm body, pos;
if (matchFunction(e, formals, body, pos)) {
ATermList formals2 = ATempty;

View File

@ -47,7 +47,7 @@ static void printTermAsXML(Expr e, XMLWriter & doc)
XMLAttrs attrs;
ATerm s;
int i;
ATermList as, formals;
ATermList as, es, formals;
ATerm body, pos;
if (matchStr(e, s))
@ -84,6 +84,12 @@ static void printTermAsXML(Expr e, XMLWriter & doc)
}
}
else if (matchList(e, es)) {
XMLOpenElement _(doc, "list");
for (ATermIterator i(es); i; ++i)
printTermAsXML(*i, doc);
}
else if (matchFunction(e, formals, body, pos)) {
XMLOpenElement _(doc, "function");