One thing I remain unclear about after reading this introduction... How do you reconcile monomorphic lists with function invocation while maintaining homoiconicity? Your use of the terminology here confuses me because elsewhere you claim the first value in a list is of a generic type; but the CDR of any list is also a list. Ergo the CAR of some lists CDR must be generic to maintain consistency. But here's the rub: that means you support polymorphic lists, so clearly I must be misunderstanding you.