#ネクサスと聞くと、どうしてもTV番組制作会社が思い浮かぶ
#現CR-NEXUS(と言っていいのか?)
#inliningは定数畳み込みとの連鎖が決まると気持ちいいコードを吐いてくれるが、コンボが決まらないとコードサイズが膨れ上がるという弊害があるなあ。
#「部分評価が効きそうな時だけインライン展開する」みたいな指示ができるといいんだろか。
#hygienic macroも、ちょっと上に書いた「舞台裏」の話と関係するような気がする。syntax-caseの世界では、macro transformerに渡される値は元のプログラムのS式にsyntacticな情報を付加したものだ。任意のS式をx、情報を付加した式を Syntax x と考えれば、syntax-caseのプリミティブは次のような型を持つことになる。
#syntax->datum :: Syntax x -> x
syntax :: x -> Syntax x
datum->syntax :: (Syntax Id, x) -> Syntax x
#あとsyntax-case自体はパターンマッチ時にSyntaxを必要に応じて取り除く。例えば Syntax (a, b) -> (Syntax a, Syntax b)とか。
#通常のLispのマクロは、プログラムのS式そのものを自由に扱える。つまりxのドメインでいろいろしたい。syntax caseのぎこちなさというのは、Syntax xの世界とxの世界を行き来しないとならないところにある。
#補助的な型情報を使って、この舞台裏の操作をうまいぐあいに隠すことはできるだろうか? 例えば、 car :: a -> b な「生のS式」の世界の手続きがSyntax aに適用されたら、自動的に Syntax a -> Syntax b になるような関数へと持ち上げてやるのだ。