Есть ли простой путь замены CL-овского #. ?
Например, кусок кода
(case ftype
((#.(keyword->g-type :enum)
#.(keyword->g-type :flags))
(convert-to-foreign value (g-type->lisp type)))
(#.(keyword->g-type :double)
(coerce value 'double-float))
(#.(keyword->g-type :float)
(coerce value 'single-float))
((#.(keyword->g-type :int)
#.(keyword->g-type :uint)
#.(keyword->g-type :long)
#.(keyword->g-type :ulong)
#.(keyword->g-type :int64)
#.(keyword->g-type :uint64)) (round value))
(t value))
Я, конечно, могу переписать через cond, но тогда при каждом вызове (внутри цикла) будет много-много поисков в словаре числа для ключевого слова.
Могу вручную выполнить (keyword->g-type :uint), (keyword->g-type :long) и подставить в код результаты. Но будет пачка «магических чисел» в коде. Причём, если в следующей версии будут другие числа у ключевых слов, придётся как-то искать все места использования.
Что посоветуете?