私は計画で持っていたアイデアをめぐって数日間苦労してきました。私はよく次のスタイルでコードを書いています
(define fib_h (lambda (n a b) <body ...>))
(define fib (lambda (n) (fib_h n 0 1)))
そして、マクロを紹介するのにいい方法だと思いました。残念ながら、これをマクロ化する方法については、私を少し超えているようです。ある時点で近づいたと思います
(define-syntax dvf
(syntax-rules ()
((_ f (args ...) (name value) ... body)
<stuff that didn't work>)))
これは、「args...」または「args... name ...」のいずれかをとる関数「f」を定義し、「args ...」だけをとる場合は、「value...」を適用します。 「名前...」引数に。私はそれを行うための2つの良い方法を考えることができます。最初のものはYコンビネータを必要とします、そして私は本当にそれらと一緒に働きたくありません。他の方法では、「name...」と「args...」の変数の数を取得する必要があります。誰かがこれを手伝ってくれるなら、私はそれをいただければ幸いです。