--- title: section2 tags: macro --- ### 2 私たちの進攻計画 品質の高いマクロを作るためには、syntax-parse と呼ばれるマクロシステムを使うことになります。これについてはすぐに説明しますので、ご安心ください。 しかし、そこから始めると、概念や用語に圧倒されて、とても混乱してしまうでしょう。私はそうでした。 1. その代わり、基本的なことから始めましょう。構文オブジェクトと、それを変更するための関数、つまり「トランスフォーマ」です。しばらくはこのレベルで作業を行い、マクロビジネス全体を神話化しないようにします。 2. すぐに、パターンマッチを使えばもっと楽になることに気づくでしょう。syntax-caseとその短縮形であるdefine-syntax-ruleについて学びます。パターン変数をテンプレートに戻す前に圧縮したい場合、混乱する可能性があることを発見し、その方法を学びます。 3. この時点で、私たちは多くの便利なマクロを書くことができるでしょう。しかし、「魔法の変数」を使って、人気のある擬人化されたifを書きたい場合はどうしたらいいでしょうか?私たちは、ある種のミスをしないように保護されていることがわかりました。このようなことを意図的に行いたいときには、シンタックスパラメータを使います。[他にも古い方法があります。他にも古い方法がありますが、それらは見ません。また、「衛生」を提唱することに多くの時間を割くことはありません-それが良いことだと規定するだけです。] 4. 最後に、マクロが誤って使用された場合に、マクロがより賢くなる可能性があることに気付きます。通常の Racket 関数は、オプションで契約と型を持つことができます。これらは使い方の間違いをキャッチし、明確で有用なエラーメッセージを提供します。マクロにも同じようなものがあったらいいですよね。あります。最近の Racket マクロの拡張機能の 1 つに syntax-parse があります。 * [next section(3 変形!)](https://hackmd.io/xLxLlckORtSxKWclYNtJ0Q?view) * [previous section(1 はじめに)](https://hackmd.io/rRfacGHSTWKOLiErxhY-fw?view)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up