fletの使い所がいまいち、わからなかった。
たとえば、dom.elを使ってhtml——tableを生成してみる。
(setq wrk (dom-node 'table nil (dom-node 'tr nil (dom-node 'td nil "123")))) (table nil (tr nil (td nil "123"))) (svg-print wrk) <table> <tr> <td> 123</td></tr></table>nil
こんな感じになるけど、なんか、わかりづらい。
構造はhtmlと同じになっているけど、dom-nodeを呼び出しているせいで視認性が悪くなっている。htmlを書くようにコードを書けるのがいいんだろうけど……あれ、じゃ、fletでこうできるんじゃね?
(flet ((table (&optional attributes &rest children) (apply 'dom-node 'table attributes children)) (tr (&optional attributes &rest children) (apply 'dom-node 'tbody attributes children)) (td (&optional attributes &rest children) (apply 'dom-node 'tbody attributes children))) (table nil (tr nil (td nil "123")))) (table nil (tbody nil (tbody nil "123")))
ああ、そうか。
fletの定義をマクロで隠蔽したらほとんど、htmlを書いているようになるんだ。
なんだ、これ。
すげえ。