(defun trampoline (function &rest args)
(loop :for fn = (apply function args)
:then (funcall fn)
:while fn))
(defun fizzbuzz (n limit)
(when (<= n limit)
;; заменишь на свой fizz buzz
(print n)
(lambda () (fizzbuzz (1+ n) limit))))
(trampoline #'fizzbuzz 1 10)
KGRlZnVuIHRyYW1wb2xpbmUgKGZ1bmN0aW9uICZyZXN0IGFyZ3MpCiAgKGxvb3AgOmZvciBmbiA9IChhcHBseSBmdW5jdGlvbiBhcmdzKQogICAgICAgICAgOnRoZW4gKGZ1bmNhbGwgZm4pCiAgICAgICAgOndoaWxlIGZuKSkKCihkZWZ1biBmaXp6YnV6eiAobiBsaW1pdCkKICAod2hlbiAoPD0gbiBsaW1pdCkKICAgIDs7INC30LDQvNC10L3QuNGI0Ywg0L3QsCDRgdCy0L7QuSBmaXp6IGJ1enoKICAgIChwcmludCBuKQogICAgKGxhbWJkYSAoKSAoZml6emJ1enogKDErIG4pIGxpbWl0KSkpKQoKKHRyYW1wb2xpbmUgIydmaXp6YnV6eiAxIDEwKQ==