Subject: rx patterns don't compose

From: Daniel Colascione <[email-masked]>
Date: Sat, 04 Sep 2010 16:37:49 -0700

It's not possible to do this currently:

(defconst foo-re (rx "abc"))
(defconst bar-re (rx (* (what-goes-here? foo-re)))

in any sensible way. This won't work

  (defconst bar-re (rx (* (regexp foo-re))))

because regexp always expects a string.

This won't work, because eval always quotes its argument:

  (defconst bar-re (rx (* (eval foo-re))))

I propose allowing regexp to accept a symbol as well as a string, and
using that symbol's value literally. Alternatively, rx could provide an
eval-unquoted facility. Or both.