末尾再帰といっているのは、Scheme くらいだと思ってて意外と Lisp 全体の話ではない気がしている。末尾再帰は Common Lisp のスペシャル変数と共存できないし、関数のフックとも相性があまりよくなくて末尾再帰を最適化すると挙動の変わるプログラムが書ける。Common Lisp だと処理系によっては最適化のオプションによっては末尾再帰最適化ができるというくらいで、性能とかスタック溢れを気にするなら do とか loop を使えという空気を感じる。
末尾再帰といっているのは、Scheme くらいだと思ってて意外と Lisp 全体の話ではない気がしている。末尾再帰は Common Lisp のスペシャル変数と共存できないし、関数のフックとも相性があまりよくなくて末尾再帰を最適化すると挙動の変わるプログラムが書ける。Common Lisp だと処理系によっては最適化のオプションによっては末尾再帰最適化ができるというくらいで、性能とかスタック溢れを気にするなら do とか loop を使えという空気を感じる。
senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.
All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.