例の LISP on TeX がかなり LISP になってきている。ということは何かネタを出す必要性が否応無く生じるわけであるが、ちょっと様子見ということで、階乗で「えるたそ」してみた。肝心の「千反田える」が現れないが気にしない。
(リストを多用するプログラムのテストが目的。)
※内部の再帰関数の定義方法が少し異様になっているが、これは letrec が実現できないため。*1
「無量大数」の桁まで計算できているが、実はこれがギリギリであり、\listEltasoFactorial
の引数をこれより増やすと、(main_memory の制限より先に)hash_size の制限に引っかかってしまう。((ここでいう「ハッシュ」とは複数文字の制御綴を登録するためのもので、新しい名前の制御綴が登場する度に空き領域が消費される。\tracingstats
で表示される情報では、「〜 multiletter control sequences out of 〜」がそのハッシュの情報を示している。原理的に「解放」ができないので、この領域の不足への対処は main_memory よりも厄介だと思われる。領域の大きさは texmf.cnf の hash_extra で設定可能であり、TeX Live 2012 での既定値は 200000 である。))