S式バトラーの不具合修正

S式バトラーの致命的エラーログ(S式バトラーの戦闘実行スクリプトが一定時間内に終わらなかった時などに、問題のあるS式をユーザから任意で記録してもらうログ)に、「(define (battle-main))」というS式が記録されていた。
実際に自分で確かめてみると、確かにタイムアウトしてしまう。
どうしてこうなるのか凄い悩んだ。凄い調べた。


結論としては、
「すぐに(battle-main)手続きが終了してしまうと、毎回eval/svに突入する/脱出するコストがかかり、すごい時間がかかってしまう」
という原因だった。
とりあえずタイムアウト秒数を増やした。
二人とも(define (battle-main))だった場合、18秒ぐらいかかってた。
これは仕方がない。


S式バトラーのルールでは、「battle-main手続きが終了したら、加速ボーナスを与えてから、battle-main手続きを再起動する」という方針を取っていたが、これが間違いだったらしい。
「battle-main手続きが終了したら、一定ステップ停止のペナルティを与える」べきだった。
……今から直すか?