Instruction sequence vs Expression tree It's jot just Lisp. Ocaml and Haskell apply as well. We don't manipulate the syntax tree, but it doesn't mean it isn't there. For instance, the following is a valid Ocaml or Haskell expression:
if condition
then foo
else bar (if condition2
then baz
else wiz)
This is not unusual code. Here is the C equivalent: condition
? foo
: bar(condition2 ? baz : wiz)
This is a tree of nested expressions.Functions as ordinary mathematical objects. I'm just saying that functions belong to the bucket of mathematical objects. As are integers. And sets. And lists… "First class" just mean we treat them as such. From https://en.wikipedia.org/wiki/First-class_function
> In languages with first-class functions, the names of functions do not have any special status; they are treated like ordinary variables with a function type.