text.html-liteについて
(use srfi-1) (use text.tree) (use text.html-lite) (write-tree (html:dl (map (lambda (m) (html:dt #`",m") (html:dd "nnnnn")) (iota 10 1))))
という感じで
<dl> <dt>1</dt> <dd>nnnnn</dd> <dt>2</dt> <dd>nnnnn</dd> ... <dt>10</dt> <dd>nnnnn</dd> </dl>
というhtmlを生成しようと思ったのだが,
<dl> <dd>nnnnn</dd> <dd>nnnnn</dd> ... <dd>nnnnn</dd> </dl>
となる.
関数が二つあるので後ろのhtml:ddが評価されてnnnnの方だけが生成されるぽい. ならばと思って
(use srfi-1) (use text.tree) (use text.html-lite) (write-tree (html:dl (map (lambda (m) (begin (html:dt #`",m") (html:dd "nnnnn"))) (iota 10 1))))
とやっても変わらない. ddの方だけが出力される.
(use srfi-1) (use text.tree) (use text.html-lite) (begin (display "<dl>") (map (lambda (m) (begin (write-tree (html:dt #`",m")) (write-tree (html:dd "nnnnn")))) (iota 10 1)) (display "</dl>"))
とすると上手くいくのだが, 何か納得がいかない.
あ, 理解した.
Method: write-tree ((tree <list>) out)
Method: write-tree ((tree <top>) out)
write-treeの既定の動作です。treeがリストなら、その要素それぞれについてwrite-treeを呼び出します。それ以外のオブジェクトに関しては displayを呼んで出力します。
(write-tree (html:dl (map (lambda (m) (list (html:dt #`",m") (html:dd "nnnnn"))) (iota 10 1))))
木構造にせなあかんのか.