git.fiddlerwoaroof.com
Raw Blame History
(in-package :mfa-tool)

(defmacro with-retry (form &body restart-cases)
  `(loop (restart-case (return ,form)
           (continue ())
           ,@restart-cases)))

(defmacro with-retry* (bindings &body body)
  `(loop
     (restart-bind (,@bindings)
       ,@(butlast body)
       ,(cons 'return (last body)))))

(defmacro safely-invoke-restart (name condition &rest args)
  (alexandria:with-gensyms (restart)
    `(alexandria:when-let ((,restart (find-restart ,name ,condition)))
       (invoke-restart ,restart ,@args))))