#構文は言えない、というのが普通だと思います。カジュアルなfirst class objectの定義は、「引数として渡せる、戻り値として返せる、変数に束縛できる」かな。
#Gaucheだと実装の都合で #<syntax> なるfirst class objectが見えたりしますが。
#構文はコンパイラが認識しなければならない以上、first class objectという「値」とは存在する世界が違う、というのが素直な解釈であるとは思います(コンパイラは「値」についてはブラックボックスとして扱って良い)。
#コンパイラの見る世界についてパラメタライズしたい(要はメタプログラミング)場合に、現在のLispやSchemeのマクロでは「構文」というメタ情報を「識別子」として扱うことしかできない。これが例えば型によるメタプログラミングと同等の力を持ち得るのかというのは疑問ではあります。メタプログラミングの世界で「値」として扱えるような何か中間オブジェクトがあると都合が良いのではないかと。
#うは、部分継続むちゃくちゃ便利かも。
#Kahua-trunkでnode-set:の扱いって変わったっけ? いつの間にか<node-set>...</node-set>っていうタグが出力に入ってることに気づいた。 node-set: の定義自体はstableから変わってないんだけど。レンダリングまわりが変わったせいかな?
#node-setとnode-list-to-node-setの違いを忘れたでござる。
#node-set:は単に (node-set <node> ...) っていうSXML要素を作るだけなんで、レンダリングのところで何とかしてたんだと思うんだけど、もはや思い出せない。関数のnode-setはまた別のような。node-set/ の方は違うことやってる。
#うーん、Kahua-stableの方を見ても特に (node-set <node> ...) というSXML要素を特別扱いしている様子が無いなあ。
#kahua-render-procではcarに'node-setがある場合を特別扱いしてるけどこれは最上位のノードだけだしな。
#レンダラーのところは @nobsun じゃないと分からないと思うけどnobsunももう忘れてるだろうなあ。
#kahua-render-procはテンプレートサポーと追加した時にまるっと書き直したけど、すでに忘却の彼方です。
#ただ、その作業をしている最中に、node-setがレンダリング結果のXMLに出てるのを見つけて直した記憶がうっすらとある。
#でも、それっt、1.0リリースの前なので、trunkとstableには同じ修正が加えられたと思うんですよね。
#可能性が高いのは、その時の修正が不完全だったってことでしょうか。
#履歴をみてみるか。
#2008-03-28 Katsutoshi Itoh <cut-sea@kahua.org>
* Fix: src/kahua/server.scm
When parts-cont reutrn node-set, then unsplicing into
parent of target node.
* Change: plugins/dsl-simple.scm
Add parts of comment/ experimental implementation.
Add parts post/ for button which has value.
#これかなぁ?
#1.0.7.2と1.0.7.3リリースの間くらい
#それはtrunkの方かな。
#そうです
#stableのChangeLogにはないようです