- Lisp Scheme Part39
615 :デフォルトの名無しさん[sage]:2015/01/04(日) 20:54:40.78 ID:368qL5zb - >>613
> (define-syntax (swap! a b)〜)となぜ書けないの? それだと一種類のパターンしか書けない。 パターン一個で受けて分解して数種類のパターンと比較して分岐するということをやってたら、結局はそこそこの分量になる。 パターンの分解はどちらにせよ必要であることを考えると最初から仕組として持っていた方が簡単だよ。 R7RS の派生式型の項にある事例 (let とか do とか) を syntax-rules なしで書いてみるといい。 絶対に長くなるから。 > (define-syntax swap! > (er-macro-transformer > (lambda (form rename compare) > とかダラダラ書かせたりするの? これについては余計と言えば余計ではある。 現時点ではどんな仕組みを底レベルマクロとして採用するのか確定してないので、 er を特別扱いすることが出来ないんだ。 er を底レベルマクロとして採用している処理系で er-macro-transformer を挟まずに使える処理系は存在する。 > (define-er-syntax (swap! a b)(rename-let(let set! tmp)〜)) > みたいなものを自分で定義しろってことなの? そう。 ささいな見た目の違いは簡単に吸収できるので問題ではないという意識が存在するのは確か。
|