William James
4/9/2015 7:52:00 AM
Kaz Kylheku wrote:
> > (defmacro sum (expression index initial condition)
> > ;; Sum $expression$ for $index$ = $initial$ and successive integers,
> > ;; as long as $condition$ holds.
> > (let ((temp (gensym)))
> > `(do ((,temp 0 (+ ,temp ,expression))
> > (,index ,initial (1+ ,index)))
> > ((not ,condition) ,temp))))
>
> The main error with this macro is that it does something you could do
> with the standard LOOP. I.e. instead of debugging this macro, you could
> be working on the program where this macro is intended to be used:
>
> (loop for x from 1 while (< x 6) summing x)
> -> 15
Gauche Scheme:
(use srfi-42)
(sum-ec (: x 6) x)
===>
15