LISP on TeX なアレが更新された*1ようなので、コレをその文法で書き換えてみた。
\documentclass{article} \usepackage{lisp} \begin{document} % もちろん'%'以降は単なるコメント \lispread\expA{% ((\lambda \zero %<LET> ((\lambda \inc %<LET> ((\lambda \two %<LET> ((\lambda \stars %<LET> ((\lambda \leq %<LET> ((\lambda \isqrt %<LET> (\stars (\isqrt ((\inc \two) \two)))) %<BODY \isqrt> (\lambda \n ((\lambda \iter %<LET> ((\iter \iter) \zero)) %<BODY \iter> (\lambda \self (\lambda \k ((\lambda \sk %<LET> (((((\leq (\two \sk)) \n) (\lambda \z ((\self \self) \sk))) (\lambda \z \k)) \zero)) %<BODY \sk> (\inc \k))%</BODY> )))%</BODY> )))%</BODY> %<BODY \leq> (\lambda \m (\lambda \n ((\lambda \ra %<LET> (((\m \ra) (\lambda \h (\lambda \t (\lambda \f \t)))) ((\n \ra) (\lambda \h (\lambda \t (\lambda \f \f)))))) %<BODY \ra> (\lambda \f (\lambda \g (\g \f))))%</BODY> ))))%</BODY> %<BODY \stars> (\lambda \n ((\n (\lambda \x (\cons '*' \x))) (\quote ())))))%</BODY> %<BODY \two> (\lambda \s (\lambda \z (\s (\s \z))))))%</BODY> %<BODY \inc> (\lambda \n (\lambda \s (\lambda \z (\s ((\n \s) \z)))))))%</BODY> %<BODY \zero> (\lambda \s (\lambda \z \z)))%</BODY> } \batchmode % non-stop running without terminal output \lispeval\expA\valA \errorstopmode % back to normal error handling \lispprint\valA \end{document}
出力は前回のものと変わらない(←つまりドット記法のまま)。
*1:コミット 0764954ac352 の版。