マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

現状の LISP on TeX でリスト記法で書いてみる

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 の版。