| Deutsch English Français Italiano |
|
<30b4599472c7cfb8b8e5b278bba46e0e@www.novabbs.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!news.nk.ca!rocksolid2!i2pn2.org!.POSTED!not-for-mail
From: HenHanna <HenHanna@dev.null>
Newsgroups: comp.lang.lisp,comp.lang.scheme
Subject: Re: What's the error in this =?UTF-8?B?bWFjcm8/?=
Date: Tue, 24 Sep 2024 00:49:20 +0000
Organization: novaBBS
Message-ID: <30b4599472c7cfb8b8e5b278bba46e0e@www.novabbs.com>
References: <vcmhni$1k4sf$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: i2pn2.org;
logging-data="3219383"; mail-complaints-to="usenet@i2pn2.org";
posting-account="25PjXUQKTQXKZnoxTqVufZcfCkmLjnu8AjjfHtuMysE";
User-Agent: Rocksolid Light
X-Spam-Checker-Version: SpamAssassin 4.0.0
X-Face: P#KeQ)CUdd!==@fw~Ms1=,Hb`IWtb6:Mw)x3B=H1BfNC\lz?Nb&)M9}$>?'X7l;CuB}utlJ=PHsRBSG6X>dYZ$[>P]$~+`>@V6$t}hTLoQ7XC~W\>:`B3ALU]SH;d(\MEc}znW8m}-ma&yPFkJ2@KSQrz=!Y;><;6a>z6N+mt`ClCt.PAE<o+B$qjwejZSZ,w]^;vrdl24z5(pm={l,F10qRDF
X-Rslight-Site: $2y$10$2QnbcAITM481/20ddpOx2.LdDx7s/mMWQfBsK.vXX3s1V/rVplK0G
X-Rslight-Posting-User: 5a1f1f09909a70d7ae18ae9af00e018f83ece577
Bytes: 2379
Lines: 39
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)))