anchor.diff:  
   (defun parse-prompt (parser &optional msg &key default 
   					    (required-p t) 
  -					    if-wrong-input
  +					    validator
  +					    if-invalid
   					    (color *prompt-color*)
   					    (error-color *prompt-error-color*))
     (loop do
  
positive.code: 	       ((and (string-equal input "") (not required-p))
  		(return nil))
  	       ((not parsed-input)
  		(if if-wrong-input
  		    (funcall if-wrong-input)
  		    (msg "Invalid value" :color error-color)))
  	       (parsed-input
  		(return parsed-input))))))	       
  
  (defun prompt-integer (&optional msg &key default 
  				       (required-p t) 
  				       if-wrong-input
  				       (color *prompt-color*)
  				       (error-color *prompt-error-color*))
    (parse-prompt #'parse-integer msg 
  		:default default
  		:required-p required-p
  		:if-wrong-input (or if-wrong-input 
  				    (lambda () (msg "Error: Not a number" :color error-color)))
  		:color color
  		:error-color error-color))
  
  (defun prompt-email (&optional msg &key default 
  				     (required-p t) 
  				     if-wrong-input
  				     (color *prompt-color*)
  				     (error-color *prompt-error-color*))
    (prompt msg :default default
  	  :required-p required-p
  	  :validator (clavier:valid-email)
  	  :if-invalid (or if-wrong-input
  			  (lambda (&optional value)
  			    (msg "Invalid email" :color error-color)))
  	  :color color
  
negative.code: 	   (return-from prompt-url
  	     (prompt-url msg :default default
  			 :required-p required-p
  			 :if-invalid if-invalid
  			 :color color
  			 :error-color error-color
  			 :probe probe
  