The syntax for functions is lists. But at runtime functions are their own type.
Are you sure? [2]
How about no? [3]
Perhaps you prefer Vim over Emacs? [4]
---
[1] http://en.wikipedia.org/wiki/Picolisp my favorite
[2] http://en.wikipedia.org/wiki/Scheme_(programming_language) probably the best known
[3] http://en.wikipedia.org/wiki/Arc_(programming_language) this bloody website runs on it
[4] http://en.wikipedia.org/wiki/Emacs_Lisp the good, the bad and the ugly, all in one package
(car (list 1 2 3 4))
with (car (lambda (x) x))
But I guess we are talking about different levels of abstraction?Actually I was almost going to add (car '(lambda (x) x)) to my post in the first place; in line with `The syntax for functions is lists.'
See the three following points:
http://www.software-lab.de/doc/faq.html#dynamic
Alternative phrases for similar-but-not-quite: insidious, error-prone.
And how `new' it is? 1958. Oh dear.
Re: ``C is more Harvard than von Neumann architecture''. Hardly; C is architecture agnostic. You can compile it for a Harvard PIC as well as for von Neumann CPU.
It may seem functions are execute-only, but on common CPUs you can treat them as data as well: read and modify (modulo memory protection). And the other way around too -- you can load a bunch of bytes from a DLL, resolve symbols to obtain pointers and use the pointers to execute the loaded bytes as functions.
--
[1] http://en.wikipedia.org/wiki/Cons