algebrite
Version:
Computer Algebra System in Coffeescript
59 lines (42 loc) • 705 B
text/coffeescript
Eval_for = ->
i = 0
j = 0
k = 0
p6 = cadr(p1)
if (!issymbol(p6))
stop("for: 1st arg?")
push(caddr(p1))
Eval()
j = pop_integer()
if (j == 0x80000000)
stop("for: 2nd arg?")
push(cadddr(p1))
Eval()
k = pop_integer()
if (k == 0x80000000)
stop("for: 3rd arg?")
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)
push_symbol(NIL)