Вы не показываете свой полный код или предупреждения об отражениях, но если они соответствуют моим ожиданиям, вам необходимо:
- подсказка A:
(def ^"[[D" A ...)
везде, где вы ее определяете
- приведите возвращаемое значение самого внутреннего выражения к двойному:
(double (* 2 ...))
Процесс создания этих исправлений заключается в выполнении macroexpand для макроса, запуске этой версии, просмотре выражений, вызывающих предупреждения об отражениях, исправлении их и надежде на то, что вы сможете доукомплектовать подсказки в исходном макросе, этот случай возможен. Я все еще рекомендую более простое решение.