Lisp-1所指的模型是,變量和函數的命名空間是同一個,沒有區分。Scheme和Clojure是採用這種命名空間,絕大部分當現代的計算機語言也是使用該方案,包括C語言。函數
#include<stdio.h> #include<string.h> int a = 1; int a() { return 2; } int main() { int *p = &a; return 0; }
這段代碼是沒法經過編譯的。spa
Lisp-2使用的是,變量和函數命名空間分離的方式,區別對待函數和變量名字。CommonLisp就是採用這種命名空間方案。
code