mysum(e, v, lo, hi) := block([s: 0], for i from lo thru hi do s: s + subst(v=i, e), s)$ mysum(1/n, n, 1, 10); 7381/2520 /* compare with builtin sum */ sum(1/n, n, 1, 10); 7381/2520 /* what if n is assigned a value ? */ n: 200$ /* still works */ mysum(1/n, n, 1, 10); 7381/2520