anchor.diff:             (prompt \"Item: \"))``
   
      Tags: flow"
  - 
  +
     (alexandria:with-unique-names (result while)
       `(block ,while
          (let ((,result nil))
  -	 (flet ((cancel ()
  -		  (return-from ,while nil))
  -		(continue* ()
  -		  (return-from ,while ,result)))
  -	   (loop 
  -	      :while (ask ,msg ,@options)
  -	      :do (setf ,result (append ,result (list (progn ,@body)))))
  -	   ,result)))))
  +         (flet ((cancel ()
  +                  (return-from ,while nil))
  +                (continue* ()
  +                  (return-from ,while ,result)))
  +           (loop
  +             :while (ask ,msg ,@options)
  +             :do (setf ,result (append ,result (list (progn ,@body)))))
  +           ,result)))))
  
positive.code: 
     The email is validated and the process does not stop until the user enters a valid email address."
    (prompt msg :default default
  	      :required-p required-p
  	      :validator (or (and validator (clavier:&& (clavier:valid-email)
  							(make-validator validator)))
  			     (clavier:valid-email))
  	      :if-invalid (or (parse-if-invalid if-invalid)
  			      (lambda (&optional value)
  				(declare (ignore value))
  				(say "Invalid email" :color error-color)))
  	      :color color
  	      :error-color error-color))
  
  (defun prompt-url (&optional msg &key default 
  				   (required-p t) 
  				   if-invalid
  				   (color *prompt-color*)
  				   (error-color *prompt-error-color*)
  				   probe
  				   if-exists
  				   (if-does-not-exist :error))
    "Prompts for an url.
  
     Args: - msg: The prompt.
  
negative.code: 
  (defun remove-options (args &rest keys)
    (let ((args (copy-list args))
          (new-args nil))
      (loop
        with arg
        while args
        do (setf arg (pop args))
           (if (member arg keys)
               (pop args)
               (push arg new-args)))
      new-args))
  
  (defun find-option (args option)
    (let ((args (copy-list args)))
      (loop with arg
            while args
            do (setf arg (pop args))
               (when (equalp arg option)
                 (return-from find-option (car args))))
      nil))
  
  (defun say (datum &rest args)
  