Function: byte-optimize-concat

byte-optimize-concat is a byte-compiled function defined in byte-opt.el.gz.

Signature

(byte-optimize-concat FORM)

Documentation

Merge adjacent constant arguments to concat.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/byte-opt.el.gz
(defun byte-optimize-concat (form)
  "Merge adjacent constant arguments to `concat'."
  (let ((args (cdr form))
        (newargs nil))
    (while args
      (let ((strings nil)
            val)
        (while (and args (macroexp-const-p (car args))
                    (progn
                      (setq val (eval (car args)))
                      (and (or (stringp val)
                               (and (or (listp val) (vectorp val))
                                    (not (memq nil
                                               (mapcar #'characterp val))))))))
          (push val strings)
          (setq args (cdr args)))
        (when strings
          (let ((s (apply #'concat (nreverse strings))))
            (when (not (zerop (length s)))
              (push s newargs)))))
      (when args
        (push (car args) newargs)
        (setq args (cdr args))))
    (if (= (length newargs) (length (cdr form)))
        form          ; No improvement.
      (cons 'concat (nreverse newargs)))))