Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defmacro retry-times (n delay-secs form)
- (let ((n-sym (gensym "n"))
- (c-sym (gensym "c"))
- (loop-tag-sym (gensym "loop-tag")))
- `(let ((,n-sym ,n))
- (tagbody ,loop-tag-sym
- (handler-bind
- ((error (lambda (,c-sym)
- (if (<= (decf ,n-sym) 0)
- (error ,c-sym)
- (progn
- (sleep ,delay-secs)
- (go ,loop-tag-sym))))))
- (return-from ,loop-tag-sym (progn ,@form)))))))
Add Comment
Please, Sign In to add comment