問題タブ [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.
javascript - ポリモーフィックなインライン キャッシュは可変型でどのように機能しますか?
ポリモーフィック インライン キャッシュ (PIC) は、高価なルックアップ手順 (通常はハッシュテーブル ルックアップ) を回避するために、オブジェクトの型によって実際のメソッドをキャッシュすることによって機能します。
型オブジェクトが変更可能な場合 (つまり、メソッドが実行時に別のものにパッチされたサルである可能性がある場合)、型比較をどのように処理しますか?
私が思いついたアイデアの 1 つは、メソッドが調整されるたびにインクリメントされる「クラス カウンター」です。それらのメソッドが変更されていなくても、そのクラス。
この問題は JavaScript に直接当てはまり、大きな JavaScript 仮想マシンの 3 つすべてに PIC があることがわかっているため、これには適切な解決策があるに違いないと確信しています。
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
。
types - Typed Racket で多相関数を引数として取る高階関数を作成するにはどうすればよいですか?
たとえばmap
、Typed Racket でポリモーフィック関数を使用するバージョンを作成するにはどうすればよいですか? 次のように定義された単純なid
関数を使用します。
リストにマップしようとすると、エラーが発生します。
recursion - OCaml 明示的な多相型アノテーション
http://caml.inria.fr/pub/docs/manual-ocaml-400/manual021.html#toc79で与えられた例に関する有益なコメントをお待ちしております。
7.12 明示的な多相型注釈
この例の関数は理解できますが、タイプの「マップのような」関数を定義しようとすると
例えば:
次のエラーが表示されます。
私は完全に理解していません。有益なコメントをいただければ幸いです。
haskell - ポリモーフィック パラメータの型でのパターン マッチ - 代替
関数の多態性パラメーターのタイプに応じて、異なる出力が必要だとしましょう。私の最初の試みは、いくつかの不可解なエラーメッセージで失敗します:
ただし、目的の型をさまざまなデータ コンストラクターでラップし、それらをパターン マッチングで使用することで、簡単に修正できます。
質問:これを回避する方法を知っていますか? Haskell2010、GHC、または最初のバリアント (または同様のもの) を使用できるようにする拡張機能はありますか?
c++ - 多相ファンクタの std::result_of
std::result_of
ファンクターで使用しようとしています。これらの結果が得られるのはなぜですか?
sql - 関数パラメータの任意の要素、PostgreSQL のバグ?
この実装ではバグは見られません。
これはある種の PostgreSQL のバグですか、それとも文書化されていないanyelement
データ型の制限ですか?
興味深い: 句が分離されている場合、このCASE
句は正常に機能します。