- 696 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/12(金) 10:17:01 ]
- 自己再帰のみ考える。
1. (defun-rec name args body-forms) というマクロを定義する 2. body-forms にマクロが含まれていたら全て展開する 3. マクロ展開後に、name と同じ名前の関数呼び出しがあったら再帰とする 4. その関数の戻り値が他の関数の引数になっていたり、変数に束縛されていなかったら末尾再帰とする 5. 3-4 を繰り返して全ての末尾再帰を探し出す 6. S 式を変形して末尾再帰をループに書き換える マクロでやるよりコンパイラに手を入れた方が…
|

|