回答編集履歴
1
symbol-valueに付いての愚痴を追加
answer
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
結果、Lisp-1と違い、関数がファーストクラスオブジェクトでも**関数定義構文は変数定義構文と別に存在する必要が出てくる**、んだ。
|
26
26
|
Schemeの```let```は局所変数定義用だけど、関数がファーストクラスオブジェクトな以上、関数も束縛可能だ。
|
27
27
|
一方、ANSI Common Lispではそうはいかない。
|
28
|
-
しかし、ANSI Common Lispの```let```では「シンボルそのもの」を束縛は可能で、その「シンボルそのもの」からどのスロットに収められた値を取り出すか、は自在に調整出来る。
|
28
|
+
しかし、ANSI Common Lispの```let```では「シンボルそのもの」を束縛は可能で(つまり「未評価の」...「クオートされた」シンボル)、その「シンボルそのもの」からどのスロットに収められた値を取り出すか、は自在に調整出来る。
|
29
29
|
|
30
30
|
```Lisp
|
31
31
|
CL-USER> (let ((x '*))
|
@@ -35,6 +35,7 @@
|
|
35
35
|
```
|
36
36
|
|
37
37
|
これが故に、ANSI Common Lispユーザーはしばしば「**Schemeにはシンボルがない**」と言うんだ。明らかにANSI Common LispのシンボルはSchemeに比べると(不必要に)高機能だ。
|
38
|
+
(Schemeだとシンボルを一旦クオートすると「それを解除出来ない」・・・Schemeでもせめて```symbol-value```があればいいのに、って思った事は数知れず、だ。)
|
38
39
|
|
39
40
|
```Lisp
|
40
41
|
The object is a SYMBOL.
|