Sujet : Re: Simple recursive functions in Lisp
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lispDate : 14. Jul 2024, 20:56:39
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v71ahj$9ncm$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:
Pascal Bourguignon wrote:
(defun sum (list)
(loop :for x :in list :sum x))
Gauche Scheme
(define (sum lst) (fold + 0 lst))
(sum '(1 3 5 7 9))
===>
25
Pascal Bourguignon wrote:
Of course, since LOOP is a higher level abstraction. You should
compare with this iterative form:
>
(defun sum (list)
(do ((current list (cdr current))
(sum 0))
((null current) sum)
(setf sum (+ sum (car current)))))
Better:
(define (sum lst)
(do ((xs lst (cdr xs))
(res 0 (+ res (car xs))))
((null? xs) res)))