問題タブ [multimethod]

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 に答える
1824 参照

c++ - Loki マルチメソッドは C++11 に組み込まれましたか?

Andrei Alexandrescuが適用したModern C++ Design Generic Programming and Design Patterns Appliedと、解決しようとしている問題を正確に扱っている multimethods に関する第 11 章を読んでいます。本のすべてのソース コードは、Lokiという名前のライブラリで公開されています。

問題は、この本がかなり古く (2001 年) 、C++11 ではもはや当てはまらない制限(たとえば、テンプレート パラメーターの数を可変にできないなど) を扱っていることです。Loki が C++11 を使用して書き直されているかどうか調べてみましたが、最後の変更は 2009 年であり、Andrei Alexandrescu のホームページには更新がありません。しかし、いくつかの調査を行った結果、Loki は標準ライブラリに組み込まれるという意味で Boost のようなものであるという印象を受けました。

マルチメソッドのイディオムまたはその一部は C++11 に採用されていますか?

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

clojure - 予期しないnullポインタを与えるClojureマルチメソッド

Clojure のマルチメソッドを期待どおりに動作させるのに苦労しています。私のコードの要約は次のとおりです。

ここで、引数でメソッド commandType が呼び出されることを期待します。これはもちろん、最初の defmethod に送信する必要がある :one を返しますが、代わりに null ポインター例外が発生します。私が思いついたマルチメソッドの最も単純な呼び出しでさえ、null ポインターが返されます。

それでも、ここにある clojure ドキュメントの例は正常に動作します。私が間違っている基本的なことはありますか?

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

inheritance - Clojureのマルチメソッドが期待値を返さない

私はJoy of Clojureの本に取り組んでおり、現在はマルチメソッドのセクションに取り組んでいます。その本では、彼らはあるものを返すはずの例を挙げていますが、私には別のものを返します (私は LightTable と Emacs の両方を試しました)。コードは少し長いです。可能な限り削除しましたが、ご容赦ください。期待どおりに返されないのは、最後から 2 番目のコマンドです (インラインで表示)。どうすればこれを適切に機能させることができますか?

ヘルパー関数は問題に付随するものなので、最初にマルチメソッドにスキップできます。それらが問題の原因である可能性がある場合に備えて、それらを含めました。詳細を知る必要がある場合は、最後にそれらを説明するメモを追加します。

*ヘルパーに関する注意: newは、 で使用されているgetns 修飾されたキーワードの観点から再定義されます。これは、基本的に、そのキーワードを使用してマップを単純に指定し、別のマップをその値としてマップに入力するだけです。引数として。この新しい {:keyword {map-as-val}} ペアは、最終的に、下部に定義されている関数を介して osx データマップに関連付けられます。新しく定義されたデータマップは、上記のコードの最後にあるマルチメソッド呼び出しの引数として機能します。::prototypebegetassocclone

マルチメソッドは初めてで、Clojure でポリモーフィック ディスパッチがどのように機能するかを直感的に理解したいだけです。これが過度に複雑であると考えるのは頭がおかしいのでしょうか?

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

clojure - マルチメソッドのディスパッチについて

これがどのように機能するかを理解できます:

しかし、単に に変更:Shapeするだけ:Shapで、これがどのようにディスパッチされているのか理解できなくなります。

Counterclockwise プラグインを使用した Eclipse 上の Clojure 1.5.1

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

haskell - Haskell 関数はいつ、複数の引数ではなくタプルを取るべきですか?

http://www.haskell.org/pipermail/haskell-cafe/2007-August/030096.htmlでは、typeclass メソッドcollideは、2 つの「通常の」引数ではなく、2 つのタプルを 1 つの引数として取るように定義されています (私が思うに、一部適用等は承知しております。)

これの目的は何ですか?

複数の引数ではなくタプル引数を使用する方が良いのはいつですか?

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

python - get/ を持つフラスコ安静同じクラスのjsonで投稿します

# api.add_resource(User, '/user/') 行がコメント解除されていて、他の api.add_resource がコメント解除されている場合、user の get メソッドは機能します。post メソッドを機能させるには、その逆が当てはまります。

これらのパスの両方を機能させるにはどうすればよいですか?

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

clojure - Clojure でのメソッドの結合

multimethod があるとしfooます。それにはいくつかの実現があります。foo引数 ofが character を含む文字列の場合にそのうちの 1 つが呼び出され、引数 ofが character を含む文字列\rの場合に別のものが実行されるとします。擬似コード:foo\!

したがって、関数を次のように呼び出すと、次のようになります。

ここで重要なことは、サポートされているメソッドのリストは固定的ではなく、拡張可能であるべきであり、元のコードに触れることなく後で新しいメソッドを追加できるということです。

ここ数日で Clojure のスキルは大幅に向上しましたが、まだ経験が不足しています。私の最善のアイデアは、「文字 - 関数」のペアでマップを保持し、それを手動でトラバースして正しい関数を実行することです。この場合、新しい関数などを登録するためのインターフェースも必要になります。慣用的な解決策とは何ですか?

0 投票する
3 に答える
1100 参照

c++ - C++ マルチメソッドとコンパイル時間の検出

私は次のコードを持っています:

そして、A * オブジェクトのコレクションで、次のことを達成したいと考えています。

1)

2) A* が派生オブジェクト D を指しているかどうかをコンパイル時に何らかの方法で判断し、MyVisitor::visit(D*)関数が存在しない場合はコンパイラ エラーを発生させます。

1) は、いくつかのマルチメソッドの実装で達成可能であることを知っています。c++ のマルチメソッドの実装をいくつか見つけることができると思います。しかし、2)何とか可能ですか?