廣島です.
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@...)