Homoiconicity is a design pattern. A language is homoiconic if a program written in it can be manipulated as data using the language, and thus the program's internal representation can be inferred just by reading the program itself.
Languages with Homoiconicity include clojure, lisp, racket, scheme, xslt