Я создаю макрос удобства. Часть удобства - то, что регулярное выражение может быть указано только с Строкой, а не # нотацией "ре".
Одна первая часть не может выяснить, то, как заставить макрос брать Строку и переписывать ее как Clojure regex (например, производить # нотацию "ре"). Я думаю, что это - синтаксис / выход из проблемы.
Моя первая наивная попытка (притворяющийся я только хочу часть String-to-regex):
(defmacro mymac [mystr] `#~mystr)
Даже возможно сделать то, что я пытаюсь сделать? Или, есть ли фактическая функция, чтобы взять Строку и произвести regex, вместо того, чтобы использовать # макрос читателя?
Или если я просто заскакиваю в Java и использую java.util.regex. Шаблон?
Для этого есть функция: re-pattern
user=> (re-pattern "\\d+")
#"\d+"
Чтобы пояснить немного подробнее:
# ""
- это макрос для чтения. Это разрешается читателем во время чтения. Таким образом, нет способа создать макрос, который разворачивается в макрос читателя, потому что фаза чтения давно прошла. Макрос возвращает фактическую структуру данных, представляющую расширенный код, а не строку, которая снова анализируется, как например. #define работает на C.
ответ j-g-faustus - это правильный путь (tm).
Я могу неправильно понять вопрос, но разве это не то, что вы хотите?
user=> (. java.util.regex.Pattern compile "mystr")
#"mystr"