Functional Programming, S-expressions, Code as Data, Recursion