zip(x,y) := if (length(x) = length(y)) = false then break else out := []; i := 0; loop if i = length(x) then break end out <- out + [[get(x,i), get(y,i)]]; i <- i+1 end; out end; fact'(a,x) := block loop if x < 1 then break end a <- a*x x <- x-1 end; a end; fact(x) := fact'(1,x); print(fact(5))