Для начала большую часть времени вы должны использовать кавычки, а не квазицитаты. Например:
(define color-set
(hash
'black '(0 0 0)
'white '(255 255 255)
'light-grey '(229 229 229)
'dark-grey '(153 153 153)))
Это просто сделать то, что вы хотите, не прибегая к квазицитатуре, нам просто нужно построить список параметров, как требуется, и apply
процедура:
(apply make-color (append (hash-ref color-set color) (list 1)))
В принципе, мы могли бы использовать квазицитирование и сплайсинг списка, чтобы делать то, что вы намеревались, но тогда мы должны помнить, что когда мы квазицитируем список, мы имеем дело со списком символов , и они должны быть оценены, чтобы быть значимыми, и вот когда все становится уродливым:
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval `(make-color ,@(hash-ref color-set color) 1) ns)