Re: What's the error in this macro?

Liste des GroupesRevenir à cl lisp 
Sujet : Re: What's the error in this macro?
De : HenHanna (at) *nospam* dev.null (HenHanna)
Groupes : comp.lang.lisp comp.lang.scheme
Date : 24. Sep 2024, 01:49:20
Autres entêtes
Organisation : novaBBS
Message-ID : <30b4599472c7cfb8b8e5b278bba46e0e@www.novabbs.com>
References : 1
User-Agent : Rocksolid Light
On Sat, 21 Sep 2024 13:29:23 +0000, B. Pym wrote:

KK 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))))
        This looks good to me...  Was this the corrected version?

>
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
(sum-ec (:range x 1 6) x)        ===>      15
In Scheme and  Gauche Scheme,   do ppl use  Gensym?
(define-macro (Sum expression index initial condition)
              `(do ((%Sum 0 (+ %Sum ,expression))
                    (,index ,initial (+ 1 ,index)))
                 ((not ,condition) %Sum)))
(print (macroexpand '(Sum  x  x 1 (< x 6))))
(print (Sum  x  x 1 (< x 6)))

Date Sujet#  Auteur
21 Sep 24 * Re: What's the error in this macro?2B. Pym
24 Sep 24 `- Re: What's the error in this macro?1HenHanna

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal