中村 のりつぐ です。
In article <20030318.151709.730982190.tsutomu@...>
Tsutomu Hiroshima <tsutomu@...> wrote:
> 今目の前にあるシステムには clisp しか無いのですが,
> 家で試したところ,gcl では (compile 'foo) をコメントアウトすると
> スタックオーバーフローします.
そんな裏技が!
やってみたら以下のように答えが出ました。
GCL (GNU Common Lisp) Version(2.5.0) Mon Mar 4 16:27:59 EST 2002
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
>(defun foo (a x)
> (if (zerop (mod x a))
> (princ (list a (/ x a))))
> (if (> a 1001) (foo (- a 1) (- x 1))))
FOO
>(compile 'foo)
Compiling gazonk0.lsp.
End of Pass 1.
;; Note: Tail-recursive call of FOO was replaced by iteration.
End of Pass 2.
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling gazonk0.lsp.
Loading gazonk0.o
start address -T 832cc60 Finished loading gazonk0.o
#<compiled-function FOO>
>(foo 2003 100000)
(1849 54)
NIL
中村 典嗣 E-mail: nnakamur@...