Разбираюсь с макросистемой racket'a. Пишу
SQL-образный DSL
Хочу проверять поля в where-clause на наличие у сущности, для которой делается запрос. И делать это на этапе компиляции.
Сейчас сущность объявляется как
(define-entity user
user_table (id name))
Что разворачивается в
(define entity
(hash 'table 'user_table
'fields '(id name)))
И проверка работает только в runtime.
Т.е. при попытке обратится из syntax-case приводит к
reference to an identifier before its definition: user phase: 1 (which cannot access the run-time definition)
Как бы выйти из этой ситуации?
Использовать для определения сущности define-for-syntax?