Notes from 10/14/02 - main discrepancy between older lisp and Scheme - atom(?) is in Lisp but not Scheme - Scheme has number?, symbol? etc - this is because Scheme doesn't want you bundling everything other than lists together - (not (pair? x)) is the bad way to simulate atom? in Scheme - eventually this will become very bad - another issue is whether () is an atom or not - tree sum example - specific one gets redefined in terms of general abstract function - naming said general function - the sum version appears to evaluate the sexpr with + at the nodes - so call this general one eval_sexpr - side note on difference between ' and (list ...) - eventually you will want more than binary trees and nested lists - trees let you represent lots of different kinds of information - what you take as basic changes your idea of combining forms, etc. - problem, for example: - (+ 1 2 (* 2 3 4)) - this doesn't have the same label (operation) on each node - it is possible to eval this like we did in eval_sexpr - gets very very ugly though - right way to do it is to think of it like a nested list/non-binary tree even though underneath we know that it isn't - this whole deal is called data abstraction