テンプレートエンジン
構造化された HTML 出力をしようとしてるけど、僕が欲しかったのは Scheme 用の汎用な(erbやらphpのような)テンプレートエンジンなのかもしれないな。
<html>
<head>
<title><%#h= title %></title>
</head>
<body>
<h1>hogehoge</h1>
<% (for-each (lambda (comment) %>
<p class="comment">
<span class="date"><%#h= (date-of comment) %></span>
<span class="content"><%#h= (content-of comment) %></span>
<a href="<%#= (anchor-of comment) %>">link</a>
</p>
<% )
(current-comments)) %>
</body>
</html>とか?インデントがきもい。
Lisper はこんなことしないと言われそうだ……けど、試しに実装してみるのも良いかもしんない。
よく考えると正しい仕様がわからないな……。ネスト可能なコメント(#| ... |#)とか quote のこととか考えるとちゃんとやるには Scheme の read を拡張するか Scheme の read に相当する機能を実装しなければいけない気がする。リーダマクロを使えばできるのかな? Scheme にはリーダマクロは無いんだっけ?