anchor.diff:           (bar 2)]
        (+ foo bar))
      ```"
  -  `((lambda ,(cars vars) ,@body) ,@(cadrs vars)))
  +  `((lambda ,(cars vars)
  +      ,@body)
  +    ,@(map make-let-binding vars)))
   
   (defmacro when-let (vars &body)
     "Bind VARS, as with [[let]], and check they are all truthy before evaluating
  
positive.code:      foo
     ```"
    (if (! (nil? vars))
      `((lambda (,(caar vars)) (let* ,(cdr vars) ,@body)) ,(cadar vars))
      `((lambda () ,@body))))
  
  ;; Binds a variable to an expression
  
negative.code: (import base (defmacro if ! when car
                cdr and pretty print debug
                defun = # >= error))
  (import type (list? nil?))
  (import list (cars cadrs caar cadar map cadr
                cdar cddr caddar))
  
  (defun make-binding (xs)
    (if (= (# xs) 1)
      (car xs)
      (if (>= (# xs) 2)
        `(lambda ,(car xs) ,@(cdr xs))
        (error "Expected binding, got nil."))))
  
  (defun make-let-binding (xs)
    (debug xs)
    (if (= (# xs) 2)
      (cadr xs)
      (if (>= (# xs) 3)
        `(lambda ,(cadr xs) ,@(cddr xs))
        (error "Expected binding, got nil."))))
  
  ;; Bind multiple variables in succession
  (defmacro let* (vars &body)
  