I am getting into quite messy code because my macro creates
defface forms.  Those do not have a dynamic value, but use the
value they get at the time they are evaluated. So using something
like a variable purple-intense does not help, because its value
would be a reference to one value, not a function that returns a
value (and having a function as a value would not be possible for
a face).

Because the purpose of faces is to be configurable by the user,
could there be some improvements to easily tackle such problems?