作者: Tsutomu Hiroshima
日時: 2002/4/12(15:21)
廣島です.

Scheme の場合の第5弾です.

;;; 解5
;;; do を使った Scheme らしからぬ解
(display
 (do ((num (read) (read))
      (total 0 (+ total num)))
     ((zero? num) total)))


それから,調べてみたところ,
Emacs Lisp は終端再帰(または末尾再帰)を正しく実装していないようです.

したがって以前の

> ___ Emacs Lisp が終端再帰を正しく実装しているならば,___
>
> (defun compute-total (total)
>   (let ((num (read-minibuffer "")))
>    (if (= num 0)
>	total
>      (compute-total (+ total num)))))
> (message (format "%f" (compute-total 0)))
>
> も解です.

は解になりませんでした.

正しい終端再帰を実装している Lisp の version があれば解なのですけど...
-----------------------------
	廣島 勉
	(tsutomu@...)