[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.lisp

Re: What's the error in this macro?

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