anchor.diff:       (when (and ,@(cars vars)) ,@body))
       ,@(map make-let-binding vars)))
   
  -(defmacro if-let (vars then else)
  -  "Evaluate THEN or ELSE, depending on the truthiness of all variables
  -   bound (as per [[let]]) in VARS."
  -  `((lambda ,(cars vars)
  -      (if (and ,@(cars vars))
  -        ,then
  -        ,else))
  -    ,@(map make-let-binding vars)))
  -
   (defmacro when-let* (vars &body)
     "Bind each pair of `(name value)` of VARS, checking if the value is
      truthy before binding the next, and finally evaluating BODY. As with
  
positive.code: (defun make-vars (x) :hidden
    (if (list? x) x (list x)))
  
  (defun make-test (x) :hidden
    (if (list? x) (car x) x))
  
  (defun make-binding (xs) :hidden
  
negative.code:     [(empty? vars) `((lambda () ,@body))]
      [else `((lambda ,(make-vars (caar vars))
                (cond
                  [,(make-var (caar vars)) (when-let* ,(cdr vars) ,@body)]
                  [else nil]))
              ,(make-binding (cdar vars)))]))
  
  