問題タブ [syntax-rules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
5920 参照

macros - スキーム マクロについて学習するためのソース: define-syntax および syntax-rules

私はJRM の Syntax-rules Primer for the Merely Eccentric を読み、構文規則とそれが common-lisp の define-macro とどのように異なるかを理解するのに役立ちました。syntax-rules は、define-syntax 内で構文トランスフォーマーを実装する唯一の方法です。

私は 2 つのことを探しています。1 つ目は構文規則の例と説明であり、2 つ目は定義構文を使用する他の方法を学ぶための良い情報源です。どのリソースをお勧めしますか?

0 投票する
9 に答える
1348 参照

python - Python で C++/C# から ?: を厳密に達成するにはどうすればよいですか?

C# では、次のように簡単に記述できます。

Python で同じことを行う簡単な方法はありますか、それとも「if」ステートメントにこだわっていますか?

0 投票する
5 に答える
3960 参照

emacs - Emacs Lisp 構文の強調表示

Emacsのシンタックスハイライト拡張機能を書きたいのですが、「emacs シンタックスハイライト チュートリアル」のバリエーションをググっても全部失敗してしまいました。Emacs ハイライターの書き方を学ぶにはどうすればよいですか? そのようなことを行う方法を学ぶために、どのような優れたリソースがありますか?

0 投票する
1 に答える
355 参照

functional-programming - スキームでマクロをリファクタリングしてください

私は衛生学を学んでいて、Schemeで単純なforループを作成しようとしました。以下の例に示すように、3種類の構成をサポートしたい

次のようなフィルターを使用したループもサポートしたいと思います。

私はこれを持っていますが、私は多くの繰り返しを見ることができます。冗長性を取り除くのを手伝ってください。

0 投票する
1 に答える
209 参照

macros - ベクトル パターンは構文規則でどのように使用されますか?

私は Common Lisp マクロを書いてきたので、Scheme の R5Rs マクロは私にとって少し不自然です。シンタックスルールでベクトルパターンをどのように使用するか理解していないことを除いて、私はアイデアを得たと思います:

引数をベクトルとして記述する必要があるマクロを使用する方法がわかりません。

それらのパターンを使用する何らかのテクニックはありますか?

ありがとうございました!

0 投票する
1 に答える
461 参照

macros - 構文規則を使用したスキームでの暗黙のカリー化?

Jeffrey Meunier は、defmacro を使用する暗黙の Curry マクロをここに持っています。誰かがこれを構文規則で書いたことがあるかどうか疑問に思っていましたか?

0 投票する
1 に答える
147 参照

macros - 構文規則は完全に衛生的ではありませんか?

私はそれsyntax-rulesが衛生的なマクロシステムであることを理解していますが、なぜこれが起こるのか理解していません:

ここで、マクロを定義しnot た後(nand #f #t)に再定義した場合は、を返します#t。なぜ、マクロシステムが衛生的であると想定されているのですか?

0 投票する
2 に答える
133 参照

clojure - clojureマクロはどのように特別なシンボルを解析しますか?

Scheme で書いたマクロを Clojure で再実装すると困ってしまう。マクロは、後で使用するために、テスト データのペアをall-testsvar にロードしようとします。

マクロの引数は可変長で、特殊な未定義シンボル、つまり が含まれているため、=>Schemy syntax-rules のようにそれを解析する方法がわかりません。

スキームのバージョン:

私の現在の失敗した Clojure バージョン:

Ps: 私はprintln今自分のコードをテストするために使用しています。動作したら、解析と読み込みの作業を試みます。

0 投票する
2 に答える
479 参照

macros - Schemeマクロ展開の順序を制御するには?

私は、Racket マクロ拡張機能を使用しています。syntax-id-rulesこれは、他のスキームの実装が という名前で提供していますidentifier-syntax。これらにより、定義された識別子が先頭位置にない場合でも発生するマクロ展開を指定できます。たとえば、次のようになります。

は、識別子proxyを のプロキシに設定しhiddenます。これは役に立たない例ですが、使用法を示しています。

fooのような識別子マクロを使用している場合にオーバーライドしたい、グローバルな通常のマクロが必要な状況に陥っています。これを と呼びましょうproxy。つまり、次のようなことができるようになりたいです。

しかし実際には、マクロが 1 つ前に展開される'defaultため、最後の行は を返します。fooproxy

これらの行に沿って何かを達成する方法はありますが、proxy識別子マクロがデフォルトのマクロ定義をオーバーライドしますfooか? 私は特に上記のアーキテクチャに専念しているわけではありません。

追加: これは実際に使用するためのものではありませんが、正式なセマンティクスの理論的ポイントのデモンストレーションの一部です。