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
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)))))
(defun sum (list)
(loop :for x :in list :sum x))
| Sysop: | Keyop |
|---|---|
| Location: | Huddersfield, West Yorkshire, UK |
| Users: | 741 |
| Nodes: | 16 (2 / 14) |
| Uptime: | 101:40:27 |
| Calls: | 12,460 |
| Calls today: | 2 |
| Files: | 15,197 |
| Messages: | 6,538,005 |