問題タブ [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.

0 投票する
4 に答える
194 参照

scala - Scala で、パラメトリック型の型パラメーターを動的に指定することはできますか?

ユーザーがコマンドラインでクラスへのパスを指定するプログラムを書いています。Class次の方法でオブジェクトに変換します。

MyParametric[T]単一の型パラメーターを持つパラメトリック クラスがあります。次に、別の Classタイプを作成Class[ParamatricType[clazz]して、それをメソッドに渡すことができるようにします。たとえば、次のようなことをしたい

しかし、それは許可されていません。動的に指定された型パラメーターを使用してパラメトリック型をインスタンス化するにはどうすればよいですか?

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

agda - Agda でのパラメトリック性を利用した証明

この回答を読んで、ポリモーフィック コンテナー関数の標準的な形式を構築し、証明しようとしました。構造は簡単でしたが、証明は私を困惑させました。以下は、私がどのように証明を書こうとしたかを簡略化して最小化したものです。

単純化されたバージョンは、パラメトリック性のために、十分に多様な関数がパラメーターの選択のみに基づいて動作を変更できないことを証明しています。1 つは固定型、もう 1 つはパラメトリックの 2 つの引数を持つ関数があるとします。

証明したい性質:

そのような発言はアグダ内部から証明可能ですか?

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

java - Java の多態的な値

私は Haskell を勉強していて、polymorphic valuesに出会いました。これらは、コンテキストに応じて異なる型を持つ値です。たとえば、Nothinghas typeMaybe aまたは[]has type[a]です。必要[]なもののリストも同様であり、リストが期待される場所ならどこでも使用できます。

null基本的にあらゆるタイプの「10億ドルの間違い」を除いて、Javaで同様のものを見つけるのに苦労しています。無制限のワイルドカードを使用したジェネリックも似ているかもしれませんが、やはり例が思い浮かびません。

Javaに似たようなものはありますか?

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

haskell - 引数として渡された関数を Haskell のさまざまな型に適用する

引数として渡された関数を 2 つの異なる型に適用する方法はありますか? 不自然な例として、(Maybe Int, Maybe Bool)(Just 3, Just True)で を作成できますが、関数でこの動作をより一般的にしようとすると

のようなことができるようにするには、型変数が定数であるgeneric Justため、コンパイラが文句を言います。a

これの使用例は、各ノードがタイプによってパラメーター化されているツリー構造にジェネリック関数を適用することです。

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

haskell - Haskell の型/データ コンストラクターでパラメトリック ポリモーフィック型を制約できますか?

数値型、より具体的には a に制約したいパラメーター化された型がありますFractional

そのため、API のユーザーは、使用する可能性のある非整数型 (FloatまたはDouble?) を定義できますが、私が作成した内部 API コードは数値型に対して算術演算を実行できます。私の「内部操作」の結果は整数ではない可能性があり、使用Fractionalするとより正確な結果が得られると理解しているため、整数にしたくありません。

上記を (少なくとも GHCI で) コンパイルすると、次のエラーが発生します。

これは、私がおそらくやり続けたくないことをしていることを示唆しています。つまり、私のデザインはゴミです。

私はこの API で次のことを言おうとしていると思いますFractional。どうすればこれを達成できますか? または、私は的外れであるか、および/または過剰に設計されていますか?

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

haskell - Haskell における抽象データ型とパラメトリック ポリモーフィズム

この 2 つの概念の関係を把握しようとしています。

まず、 Abstract Data Typeの例を考えてみましょう:

Haskell wikiによると:

この型は、データ型のユーザーによって提供される構造のいくつかの側面を未定義のままにするため、抽象的です。これは抽象データ型の弱い形式です。ソース

ここで、パラメトリック ポリモーフィズムの概念を考えてみましょう。

パラメトリック ポリモーフィズムとは、値の型に 1 つ以上の (制約のない) 型変数が含まれている場合を指します。そのため、値は、それらの変数を具象型に置き換えた結果の任意の型を採用できます。--ソース

以下に例を示しid :: a -> aます。

たとえば、関数id :: a -> aの型に制約のない型変数 a が含まれている

質問:これら 2 つの概念の正式な関係は何ですか? 特に、抽象データ型のすべてのインスタンスは、パラメトリック ポリモーフィズムのインスタンスでもありますか? 逆はどうですか?

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

java - Java ClassCastException がジェネリック インスタンス "new ClazzXXX から ParameterizedType E を取得()"

以下に、実行したい例を貼り付けました。

StringHomeを拡張するインスタンスの汎用クラスを簡単に取得できますが、インスタンスでHome<String>同じことを行うことはできませんnew Home<String>()。どうすれば入手できますか?

私の目標は、mainKOメソッドが機能するようにするmainOKことです。

このクラスを実行すると、次のように出力されます。