問題タブ [polymorphic-functions]

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

javascript - ポリモーフィックなインライン キャッシュは可変型でどのように機能しますか?

ポリモーフィック インライン キャッシュ (PIC) は、高価なルックアップ手順 (通常はハッシュテーブル ルックアップ) を回避するために、オブジェクトの型によって実際のメソッドをキャッシュすることによって機能します。

型オブジェクトが変更可能な場合 (つまり、メソッドが実行時に別のものにパッチされたサルである可能性がある場合)、型比較をどのように処理しますか?

私が思いついたアイデアの 1 つは、メソッドが調整されるたびにインクリメントされる「クラス カウンター」です。それらのメソッドが変更されていなくても、そのクラス。

この問題は JavaScript に直接当てはまり、大きな JavaScript 仮想マシンの 3 つすべてに PIC があることがわかっているため、これには適切な解決策があるに違いないと確信しています。

0 投票する
0 に答える
446 参照

scala - 形状のない LeftFolder の暗黙的な展開の発散

私はこの問題HListを解決しようとしていて、関数を使用して折り畳みたいと思っていPoly2ます。

これは自己完結型の MWE です (問題を再現するために、シェイプレス 2.0 の REPL 内にこれをコピーして貼り付けることができます)。

次のエラーが表示されます。

エラー: shapeless.ops.hlist.LeftFolder[shapeless.::[NonNullable[Int,this.T],shapeless.::[Nullable[String,this.T],shapeless.HNil]],( List[Int], shapeless.HNil.type),toRecord.type]

オブジェクト LeftFolder のメソッド hnilLeftFolder で開始 cols.foldLeft((List(1,2), HNil))(toRecord)

そのため、明らかにコンパイラは、LeftFolder foldLeftニーズを生成するために複数の暗黙を見つけることができます。

LeftFolderあいまいさを解消し、実際にを使用する を派生させたいことをコンパイラに明示的に伝える方法がわかりませんtoRecord

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

types - Typed Racket で多相関数を引数として取る高階関数を作成するにはどうすればよいですか?

たとえばmap、Typed Racket でポリモーフィック関数を使用するバージョンを作成するにはどうすればよいですか? 次のように定義された単純なid関数を使用します。

リストにマップしようとすると、エラーが発生します。

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

recursion - OCaml 明示的な多相型アノテーション

http://caml.inria.fr/pub/docs/manual-ocaml-400/manual021.html#toc79で与えられた例に関する有益なコメントをお待ちしております。

7.12 明示的な多相型注釈

この例の関数は理解できますが、タイプの「マップのような」関数を定義しようとすると

例えば:

次のエラーが表示されます。

私は完全に理解していません。有益なコメントをいただければ幸いです。

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

haskell - ポリモーフィック パラメータの型でのパターン マッチ - 代替

関数の多態性パラメーターのタイプに応じて、異なる出力が必要だとしましょう。私の最初の試みは、いくつかの不可解なエラーメッセージで失敗します:

ただし、目的の型をさまざまなデータ コンストラクターでラップし、それらをパターン マッチングで使用することで、簡単に修正できます。

質問:これを回避する方法を知っていますか? Haskell2010、GHC、または最初のバリアント (または同様のもの) を使用できるようにする拡張機能はありますか?

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

c++ - 多相ファンクタの std::result_of

std::result_ofファンクターで使用しようとしています。これらの結果が得られるのはなぜですか?

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

sql - 関数パラメータの任意の要素、PostgreSQL のバグ?

この実装ではバグは見られません。

これはある種の PostgreSQL のバグですか、それとも文書化されていないanyelementデータ型の制限ですか?


興味深い: 句が分離されている場合、このCASE句は正常に機能します。