Scheme Compiler の勉強 (9) - define-syntax
- そもそも scheme が良くわかっていないので勉強。
- define-macro と関数定義と。http://practical-scheme.net/gauche/man/gauche-refj_24.html#SEC30 より。
注: いくつかのSchemeの実装ではformalsの構文を拡張して、 CommonLispのように省略可能引数やキーワード引数などの表記を可能にしているものが あります。Gaucheには今のところそのような拡張はありません。
- あれ、何か勘違いしているかな。 http://karetta.jp/book-node/gauche-hacks/008237 と http://karetta.jp/book-node/gauche-hacks/007516 を見るとキーワード引数も使える。 http://karetta.jp/book-node/gauche-hacks/007611 も。Scheme って基本的にキーワード引数無いのか、、。
- Common Lisp の with-open-file みたいな、「カッコの多いマクロ」(正しい言葉を知らないが、独自のシンタックスを作るようなマクロ)を作るには、 define-syntax しか無いのだろうか?以下のようなことがしたい。
(defmacro define-priimitive (name (args &keyword return) &body body) ) (define-primitive fxadd1 (i32 %x :return i32) (emit ..) )