昔、Schemeの処理系を作っていたとき、最初>>956の言う様な、
初出変数を自動宣言できるという仕様にしていた。
だけど、Schemeでライブラリを書いていくうちに、それが大きな
間違いだった事に気づいた。
原因不明な実行時エラーという形で問題が表面化したからだ。
変数に使うシンボル名にゴミが付いただけで、それが何のエラーも
出ずに通ってしまっていたのだ。
エラーが出た時点で、名前にゴミが付いたという原因は判るはずもなく、
あてのないデバッグ作業が続いた。
ロジックは全てあっているし、トリッキーなこともしていない。
あげく、自分の書いたコードに不信感を抱き、このコードには
呪いでも掛かっているのでは?
と、オカルト的な思考をしてしまう程追い詰められた。
そして原因がわかった時、その恐怖は想像を絶した。
・・これは、Lispに限らない話。