        (cons (concat ,prefix (progn ,@body)) emacsql--vars))))
 
 (defun emacsql--!param (thing &optional kind)
-  "Only use within `emacsql-with-params'!"
+  "Parse, escape, and store THING.
+If optional KIND is not specified, then try to guess it.
+Only use within `emacsql-with-params'!"
   (cl-flet ((check (param)
                    (when (and kind (not (eq kind (cdr param))))
                      (emacsql-error

  "Cache used to memoize `emacsql-prepare'.")

(defvar emacsql--vars ()
  "For use with `emacsql-with-params'.")

(defun emacsql-sql-p (thing)
  "Return non-nil if THING looks like a prepared statement."

    (mapconcat #'expr idents ", ")))

(defun emacsql--*combine (prepared)
  "Append parameters from PREPARED to `emacsql--vars', return the string.
Only use within `emacsql-with-params'!"
  (cl-destructuring-bind (string . vars) prepared
    (setf emacsql--vars (nconc emacsql--vars vars))
    string))
