UNPKG

algebrite

Version:

Computer Algebra System in Coffeescript

59 lines (42 loc) 705 B
# 'for' function #define A p3 #define B p4 #define I p5 #define X p6 Eval_for = -> i = 0 j = 0 k = 0 # 1st arg (quoted) p6 = cadr(p1) if (!issymbol(p6)) stop("for: 1st arg?") # 2nd arg push(caddr(p1)) Eval() j = pop_integer() if (j == 0x80000000) stop("for: 2nd arg?") # 3rd arg push(cadddr(p1)) Eval() k = pop_integer() if (k == 0x80000000) stop("for: 3rd arg?") # remaining args p1 = cddddr(p1) p4 = get_binding(p6) p3 = get_arglist(p6) for i in [j..k] push_integer(i) p5 = pop() set_binding(p6, p5) p2 = p1 while (iscons(p2)) push(car(p2)) Eval() pop() p2 = cdr(p2) set_binding_and_arglist(p6, p4, p3) # return value push_symbol(NIL)