問題タブ [core.match]

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 投票する
2 に答える
195 参照

clojure - core.match パターンの優先度

私の core.match パターンでは、1 つの特定のパターンに「優先度を高く」したいと考えています。たとえば、次のようになります。

行内のtext変数が"empty"一致した場合は常に後続の一致を停止し、「空」を返すようにします。ただし、おそらくこの句はより一般的であるため、最後の句として試行され、代わりに別の句と一致します。

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

clojure - core.match の述語関数ディスパッチ

私は(ちなみに、これは素晴らしいライブラリです)に飛び込み始めたばかりで、任意の述語関数でディスパッチするcore.matchように拡張できるようにしたいと考えています。match残念ながら、コンパイラはマクロ展開時に関数が関数であるかどうかを判断できないため、それは不可能のようです。

これは正しいですか?もしそうなら(そうでなければ)、以下に示すようにmatch式で関数を使用できるようにハックする方法はありますか?

例えば

マルチメソッドを介してインターフェースを拡張することを認識しており、セット内の包含の一致にセットリテラルを使用するのに非常にうまく機能しました。

前もって感謝します。

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

clojure - multimethod の代わりに core.match/match を使用して clojure のデータ型を一致させる

このタイプのマッチング作業をお願いできますか。(私は使用していますclojure.core.match/match)。またはmultimethod行く唯一の方法です。

ありがとう

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

clojure - Clojureはマクロの引数を評価します

core.match マクロのパターンを生成するマクロを作成しようとしています。

そして、ハードコードされた先行者で直接使用すると、これは正常に機能します。

これまでのところすべて問題ありませんが、関数呼び出しを使用して前任者を渡そうとすると、次のようになります。

問題は、match2 がマクロ clojure であるため、関数呼び出しを評価せず、フォームをそのまま渡すことです。次に、評価されていないフォームが core.match に移動し (core.match 自体がマクロであるため、ここでも評価されません)、フォームが正しいパターンではないため、core.match は例外をスローします。

マクロ引数の評価を強制するにはどうすればよいですか? または他の回避策はありますか?

これは通常 2 番目のマクロで行われるとほのめかされましたが、私の試みでは良い結果が得られませんでした。

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

clojure - パターンと結果をベクトルとして core.match/match に渡すマクロ

core.match/matchパターンと結果をベクトルの形で渡すことができるマクロを構築する方法に苦労しています。私はこれを行うことができるようにしたいと思います:

パターンをリテラルとして渡さない限り、機能しない以下のアプローチと他のいくつかのアプローチを試しました。