The most important precedents deal with the whole idea of symbolic programming – the notion of setting up symbolic expressions that can represent anything one wants, and then having functions that operate on both their structure and content.