I'm trying to understand the view that procedures and data are virtually the same in lisp. SICP says that:
- the values of numerals are the numbers that they name,
- the values of built-in operators are the machine instruction sequences that carry out the corresponding operations, and
- the values of other names are the objects associated with those names in the environment.
The second stipulation says that "the values of built-in operators are the machine instruction sequences that carry out the corresponding operations." if I wish to change the values thereby changing the machine instructions, like this:
(define + 2)
(* + 3) ;6
it works fine.
Now, the first case stipulates that "the values of numerals are the numbers that they name". If I type
2
The value is the representation of 2 that gets outputted. Now, if I wish to change it, like this:
(define 2 +) ;bad syntax
Why is that?