As a sidenote I played around with ways of counting leaves
(defun count-leaves (list)
(loop for element in list summing
(if (listp element) (count-leaves element) 1)))
(defun count-leaves (element)
(typecase element
(list (reduce #'+ (mapcar #'count-leaves element)))
(atom 1)))
Here I clearly prefer the first as it is MUCH more efficient (and also slightly terser).
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 59 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 21:05:25 |
| Calls: | 810 |
| Calls today: | 1 |
| Files: | 1,287 |
| D/L today: |
11 files (21,026K bytes) |
| Messages: | 194,568 |