|
|
|
|
|
by paul_reiners
6661 days ago
|
|
I'm not sure, but I think you need to use labels, rather than flet, in this case, since local functions defined using flet cannot be recursive. At least that's how I interpret what it says on page 319. At any rate, this solution works using labels: (defmacro ntimes (n &rest body)
(let ((h (gensym))
(g (gensym)))
`(let ((,h ,n))
(labels ((ntimes-local (,g)
(if (> ,g 0)
,@body)
(if (zerop ,g)
nil
(ntimes-local (1- ,g)))))
(ntimes-local ,h)))))
(Sorry, but again I don't know how to preserve the formatting of my code in this newsgroup.) |
|