      (if (assoc form bindings)
          (list 'value (alist-get form bindings))
        (list 'partial form)))
+
     (`(if ,cond ,then)
      (whatif--simplify `(if ,cond ,then nil) bindings))
     (`(if ,cond ,then ,else)

       (`(value ,value)
        (if value
            (list 'value nil)
          (list 'partial `(progn ,@(mapcar #'cl-second body)))))
       (`(partial ,_)
        (list 'partial
              `(unless ,(cl-second cond)
                 ,@(mapcar #'cl-second body))))))
    ;; TODO: backquote.
    (`(quote ,sym)
     (list 'value sym))

    (pcase current
      (`(value ,value)
       (push (list 'value value) simplified-exprs)))
    (pcase (nreverse simplified-exprs)
      (`(,expr) expr)
      (`,exprs
       (list 'partial `(progn ,@(mapcar #'cl-second exprs)))))))

(defun whatif--values-p (forms)
  "Do all FORMS represent values?"
