テンプレートエンジン

構造化された 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 にはリーダマクロは無いんだっけ?