Ответ зависит от того, что вы хотите сделать с этой информацией. Дело в том, что он не хранится во время выполнения - это как привязки в функциях, которые не существуют во время выполнения. Но они существуют на уровне синтаксиса (= время компиляции). Например, этот глупый пример покажет вам значение, которое хранится на уровне синтаксиса, который содержит форму структуры:
> (define-struct foo (x y))
> (define-syntax x (begin (syntax-local-value #'foo) 1))
> (define-syntax x (begin (printf ">>> ~s\n" (syntax-local-value #'foo)) 1))
>>> #<checked-struct-info>
Конечно, он не показывает много, но это должно быть хорошим началом (вы можете посмотреть struct-info
в документации и в коде). Но это может быть не то, что вы ищете, поскольку эта информация существует только на уровне синтаксиса. Если вы хотите что-то, что есть во время выполнения, то, возможно, вам лучше использовать списки или хэш-таблицы?
ОБНОВЛЕНИЕ (я слишком быстро просмотрел ваш вопрос):
Чтобы отобразить структуру в строку таблицы БД, вам нужно определить больше вещей: по крайней мере, удерживайте БД и поля, которые она обозначает, возможно, открытое соединение с БД для хранения значений или чтения значений из них. Так что, на мой взгляд, лучший способ сделать это с помощью макроса в любом случае - этот макрос расширится до использования define-struct
со всем остальным, что вам нужно сохранить.