rmod(i, j) := mod(j, i)$ rpow(x, y) := y^x$ rpn(sexpr) := ( operands: [], expr: charlist(sexpr), for token in expr do ( if token = "+" then ( push(pop(operands) + pop(operands), operands) ) elseif token = "-" then ( push(-1 * (pop(operands) - pop(operands)), operands) ) elseif token = "*" then ( push(pop(operands) * pop(operands), operands) ) elseif token = "/" then ( push(1 / (pop(operands) / pop(operands)), operands) ) elseif token = "%" then ( push(rmod(pop(operands), pop(operands)), operands) ) elseif token = "^" then ( push(rpow(pop(operands), pop(operands)), operands) ) elseif token # " " then ( push(parse_string(token), operands) ), if token # " " then ( print(token, " : ", operands) ) ), pop(operands) )$ rpn("3 4 2 * 1 5 - 2 3 ^ ^ / +"), numer;