Quite a lot, actually.
Polynomials can be easily manipulated, such as taking a derivative, and the result is still valid executable code.
Macros use homoiconicity all the time, doing code walking and code expansion.
Functions can construct and return functions easily.