問題タブ [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.
clojure - core.match パターンの優先度
私の core.match パターンでは、1 つの特定のパターンに「優先度を高く」したいと考えています。たとえば、次のようになります。
行内のtext
変数が"empty"
一致した場合は常に後続の一致を停止し、「空」を返すようにします。ただし、おそらくこの句はより一般的であるため、最後の句として試行され、代わりに別の句と一致します。
clojure - core.match の述語関数ディスパッチ
私は(ちなみに、これは素晴らしいライブラリです)に飛び込み始めたばかりで、任意の述語関数でディスパッチするcore.match
ように拡張できるようにしたいと考えています。match
残念ながら、コンパイラはマクロ展開時に関数が関数であるかどうかを判断できないため、それは不可能のようです。
これは正しいですか?もしそうなら(そうでなければ)、以下に示すようにmatch
式で関数を使用できるようにハックする方法はありますか?
例えば
マルチメソッドを介してインターフェースを拡張することを認識しており、セット内の包含の一致にセットリテラルを使用するのに非常にうまく機能しました。
前もって感謝します。
clojure - multimethod の代わりに core.match/match を使用して clojure のデータ型を一致させる
このタイプのマッチング作業をお願いできますか。(私は使用していますclojure.core.match/match
)。またはmultimethod
行く唯一の方法です。
ありがとう
clojure - Clojureはマクロの引数を評価します
core.match マクロのパターンを生成するマクロを作成しようとしています。
そして、ハードコードされた先行者で直接使用すると、これは正常に機能します。
これまでのところすべて問題ありませんが、関数呼び出しを使用して前任者を渡そうとすると、次のようになります。
問題は、match2 がマクロ clojure であるため、関数呼び出しを評価せず、フォームをそのまま渡すことです。次に、評価されていないフォームが core.match に移動し (core.match 自体がマクロであるため、ここでも評価されません)、フォームが正しいパターンではないため、core.match は例外をスローします。
マクロ引数の評価を強制するにはどうすればよいですか? または他の回避策はありますか?
これは通常 2 番目のマクロで行われるとほのめかされましたが、私の試みでは良い結果が得られませんでした。
clojure - パターンと結果をベクトルとして core.match/match に渡すマクロ
core.match/match
パターンと結果をベクトルの形で渡すことができるマクロを構築する方法に苦労しています。私はこれを行うことができるようにしたいと思います:
パターンをリテラルとして渡さない限り、機能しない以下のアプローチと他のいくつかのアプローチを試しました。