問題タブ [parametric-polymorphism]
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.
c++ - ポリモーフィズムとオーバーロードの違い
ポリモーフィズムとオーバーロードについては多くの定義があることがわかりました。オーバーロードはポリモーフィズムの一種であると言う人もいます。一部の人々は同じではないと言いましたが。オーバーロードで割り当てられる関数は1つだけだからです。ポリモーフィズムでは、再定義されたメンバー関数ごとにメモリを割り当てる必要があります。私は本当にこれについて混乱を感じています. 誰かが私のためにこれを説明できますか? さらに、コンパイル時にオーバーロードが発生し、実行時にポリモーフィズムが発生するかどうか。
c# - 予期せずに型指定された引数を WCF サービスで処理できますか?
私は WCF サービスに比較的慣れていないので、明らかなことが抜けている場合はあらかじめお詫び申し上げます。私のビジネスでは配送ソリューションとして EasyPost を使用しており、EasyPost からの配送ステータス Webhook 呼び出しを処理する WCF サービスを作成しました。
簡単に言うと、EasyPost は更新オブジェクトを POST 経由で JSON として送信します。問題は、いくつかの異なるタイプの (構成不可能な) 更新を同じサービス メソッドに送信することです。すべての可能性を網羅する DataContract を作成するのは難しいと思います。たとえば、送信する引数が追跡番号の更新である場合、update.result.statusは文字列値になります。一括ステータス更新の場合、update.result.statusはオブジェクトになります。少し混乱しています。
気になる更新タイプだけを処理し、他のものでは 400 ステータス コードを返そうとしましたが、EasyPost はそれを停止と解釈し、サービスを Webhook エンドポイントとしてドロップします。
私が読んだことから、 System.ServiceModel.Channels.Messageパラメーターをキャッチオールとして使用することを支持して、データ コントラクトの快適さを放棄し、メッセージを手動で解析できるようです。ただし、それは賢明でクリーンな解決策とは思えません。
代替案があればありがたいです。
haskell - Haskell のポリモーフィズムによる再帰代数データ型
普遍的なポリモーフィズムの機能を考慮して、再帰代数データ型の定義、逆変換、およびエンコードを理解しようとしています。例として、次の方法で再帰的な二分木の実装を試みました。
二分木のタイプはT
、定数e: T
と二分演算を備えたすべてのタイプm: T -> T -> T
、つまり functor の「初期モジュール」を備えたすべてのタイプの中で初期化する必要があるという直感BTAlg
です。つまり、 の要素BT
は、そのようなモジュールT
に対して の要素を割り当てる方法ですT
。
それ自体のモジュール構造は、次のBT
方法で定義できます。
のパターン マッチングに向けたステップとして、型自体にBT
要素を適用したいと思います。これは、 の何らかのエンコード/デコードと考えられます。x:BT
BT
x
ただし、このコードでは、処理できない型エラーが発生します。
ここで何が問題なのですか?に適用できるようにするには、ユニバーサル型パラメーターz
をに特化する必要があることを型チェッカーが認識しない理由がわかりません。書くことも役に立ちません。BT
x
x
initial_module
(x :: ((BTAlg BT) -> BT) -> BT) initial_module
定義の動機に関する補遺decode_encode
:BT
標準実現と実際に「同型」であることを自分自身に納得させたい
二分木の; Haskell内でこれを正確にする方法はわかりませんが、最初はマップBT -> BTStd
を作成BTStd -> BT
し、2つの実現の間を行き来することです。
の定義は、 の標準モジュール構造にtoStandard: BT -> BTStd
の普遍的なプロパティを適用したものです。BT
BTAlg
BTStd
デコード機能についてfromStandard: BTStd -> BT
は、次のことを行いたいと思います。
decode_encode
ただし、これにより、上記の直接定義と同じタイプの問題が発生します。
ありがとうございました!
ocaml - OCamlの「constraint」キーワードでできること
OCaml のマニュアルでは、型定義で使用できる "constraint" キーワードについて説明しています。ただし、このキーワードで実行できる使用法はわかりません。このキーワードが役立つのはいつですか? 多相型変数を削除するために使用できますか? (type 'a t
モジュール内の a が正しくなり、変数なしt
で必要なファンクター引数でモジュールを使用できるようにしt
ます。)
javascript - JavaScript でのマルチレベル ポリモーフィズム、ポリモーフィック Object.extend
拡張されるオブジェクトで実行される拡張メソッドによって実装されるポリモーフィズムをサポートするマルチレベル継承を実装したいと思います(外部ユーティリティまたは関数によってではなく、拡張されるオブジェクトの観点から)。
tl;dr jsfiddle はこちら: http://jsfiddle.net/arzo/VLkF7/
私は何をしたいですか?
上記のコードの問題は何ですか? これが通常の場合、たとえば C++ 継承の場合、 DragNDrop にはundoメソッドがありますが、そうではありません。が実行されます(したがって、 ActionObj.extend を実行する場合、関数のキーワードthisがMyObjではなくActionObjに評価されるように拡張したいと思います)
この問題の解決策は、次のような jQuery.extend の _.extend を使用することです。
ただし、上記の解決策には外部ツールを使用する必要があります。MyUtils
この場合、これは実際にはポリモーフィックな解決策ではありません。
MyObj.extend を強制的に実行時に評価された (when-defining-evaluated ではない)this
式で反復処理する方法を知っていますか?
haskell - Haskellでグローバルポリモーフィック値をメモする自動方法はありますか?
のようなポリモーフィックな「定数」は、5 :: Num a => a
実際には定数ではなく、辞書引数の関数です。したがって、定義すると
もちろん、悪い例です。多態性にする正当な理由はありません...私が本当に興味を持っているのは、たとえばmemo-trie
s を使用して、自明でない多態性関数をグローバルに記憶しようとする場合です。
このシーケンスは、異なるサイトからの呼び出し間で共有されず、パフォーマンスの点で良くありません。(これが、Haskell 標準が恐ろしい単型性制限を私たちにもたらした主な理由ではないでしょうか?)
共有を強制する方法を確認できる唯一の方法は、制約クラスのすべてのインスタンスにモノモーフィックな「タグ」を配置することです。例えば
…優雅さという点では良くありません。
このようなメモ化を実装するより良い方法はありますか?
haskell - この関数が型チェックに失敗するのはなぜですか?
関数型プログラミングの講義中に、次の Haskell 関数を見ました。
この関数は型チェックに失敗することが予想されます。しかし、これが起こる理由は説明されていませんでした。GHCIで試してみると、次の出力が得られました。
なぜこれが起こるのですか?
casting - 整数であることがわかっているジェネリック型をキャストする方法は?
一般的な方法で C API のリターン コードをチェックしたいのですが、結果はlibc::c_int
. 次のような関数を書く方法はありますか
とが のすべての使用法に対して整数型であるS
と確信している場合 コンパイラは私のコードを不平を言って拒否しますT
check()
error: non-scalar cast: `S` as `T`