Category theory often captures the hearts of computer scientists because of its uncanny capacity to cleanly describe CS concepts. A common example is the way Algebraic Data Types can be represented as product and coproduct.
Homoiconicity is a label for programming languages where "the primary representation of programs is also a data structure in a primitive type of the language itself". I might describe it as a recursive relationship between a program's syntax and its semantics. The main benefit of using a homoiconic language is that it unlocks some very powerful metaprogramming capabilities. Lisp and Prolog are common examples of such languages that deliver on this promise of powerful metaprogramming. A Couple of Meta-interpreters in Prolog is a nice introduction to this kind of metaprogramming for Prolog.
I have a CS-background and I found the isomorphism between ADTs and the CT concepts product and coproduct quite clarifying for understanding ADTs. Similarly, I could say I have a practical understanding of homoiconicity, but not in the illuminating way that a categorical description of it may provide.
Thus this question (stated a few ways):
Is there a way to describe the relationship between the higher-level representation of a program and its representation in a primitive datatype in category theory terms?
or
Is there is a categorical description of homoiconicity that captures its essence?
or
What is the category of homoiconicity?