Sujet : Re: Finding Average without using Recusrion only using Prog
De : sgonedes1977 (at) *nospam* gmail.com (steve g)
Groupes : comp.lang.lispDate : 09. Aug 2024, 23:51:54
Autres entêtes
Message-ID : <87bk21tldx.fsf@gmail.com>
References : 1
User-Agent : Gnus/5.13 (Gnus v5.13)
"B. Pym" <
No_spamming@noWhere_7073.org> writes:
< > (defun avg (args)
< > (loop for x in args
< > for l upfrom 1
< > summing x into tot
< > finally (return (/ tot l))))
>
Gauche Scheme
>
(use gauche.collection) ;; fold2
>
(define (add&count n sum cnt) (values (+ sum n) (+ cnt 1)))
>
(define (avg nums)
(apply /
(values->list
(fold2
add&count
0 0
nums))))
>
(avg '(20 30 40 50 60 70 80))
===>
50
(defun avg-with-prog (lst)
(prog ((avg 0) (cnt 0))
START
(setq avg (+ avg (pop lst)))
(incf cnt)
(if (endp lst)
(GO END)
(GO START))
END
(print (/ avg cnt))))