Closed bgnori closed 10 years ago
案: (Scheme的)
V(a b c)
は (qq (a b c))
,a
は (uq a)
.@rest
は (sq rest)
Clojureだと
~a
が (uq a)
~@rest
が (sq rest)
readerで扱うtokenが異なるだけで, 処理するS-Exprは同じだろう.
(defmacr [x & rest] ...)
などで受け取ったらrestを展開する時にArrayじゃなくてPairだとかいう実装上の問題.
,@rest
の書き間違いだなぁ.
(let [x gensym]
`(+ ,x 1))
`(+ ~x 1)
gensymとその利用, unquoteを組み合わせた記法はどうなんだろう. 仮にgqとでも呼ぶか. S-Exprはこう. qqをネストされると危険な感じがする.
(qq (+ (gq x) 1)
多重はとりあえずはやらない. その場合は再度開く.
5c394ffdb8553f541a7d5845de046938572066d5
論点:
仕様
4.9 準クオート(Quasiquote), gauche
2重 quasiquote , @togetter
Clojure要調査.
Clojure Macro Tutorial (Part I, Getting the Compiler to Write Your Code For You)