Ваше предположение верно, тело кода после определения, данного with-test
, будет оцениваться как любое нормальное тело кода Clojure, так что вы можете использовать конструкцию как let
.
Один хороший советдолжен использовать macroexpand
для просмотра кода, сгенерированного макросом, подобным with-test
.Насколько вы можете доверять этому, определить сложнее.Я бы сказал, что вы должны использовать свой здравый смысл, чтобы выяснить, какова реальная цель макроса, который вы используете.Макросы являются мощными инструментами, и граница между обычным использованием макроса и опорой на детали реализации гораздо более размыта, чем для функции.В этом случае вы должны быть совершенно уверены в поведении with-test
, посмотрев на список аргументов, последний аргумент, а именно body
, подразумевает, что он принимает любое количество форм так же, как тело функции, a let
или do
будет работать.