問題タブ [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.
scala - Scala で、パラメトリック型の型パラメーターを動的に指定することはできますか?
ユーザーがコマンドラインでクラスへのパスを指定するプログラムを書いています。Class
次の方法でオブジェクトに変換します。
MyParametric[T]
単一の型パラメーターを持つパラメトリック クラスがあります。次に、別の Class
タイプを作成Class[ParamatricType[clazz]
して、それをメソッドに渡すことができるようにします。たとえば、次のようなことをしたい
しかし、それは許可されていません。動的に指定された型パラメーターを使用してパラメトリック型をインスタンス化するにはどうすればよいですか?
agda - Agda でのパラメトリック性を利用した証明
この回答を読んで、ポリモーフィック コンテナー関数の標準的な形式を構築し、証明しようとしました。構造は簡単でしたが、証明は私を困惑させました。以下は、私がどのように証明を書こうとしたかを簡略化して最小化したものです。
単純化されたバージョンは、パラメトリック性のために、十分に多様な関数がパラメーターの選択のみに基づいて動作を変更できないことを証明しています。1 つは固定型、もう 1 つはパラメトリックの 2 つの引数を持つ関数があるとします。
証明したい性質:
そのような発言はアグダ内部から証明可能ですか?
java - Java の多態的な値
私は Haskell を勉強していて、polymorphic valuesに出会いました。これらは、コンテキストに応じて異なる型を持つ値です。たとえば、Nothing
has typeMaybe a
または[]
has type[a]
です。必要[]
なもののリストも同様であり、リストが期待される場所ならどこでも使用できます。
null
基本的にあらゆるタイプの「10億ドルの間違い」を除いて、Javaで同様のものを見つけるのに苦労しています。無制限のワイルドカードを使用したジェネリックも似ているかもしれませんが、やはり例が思い浮かびません。
Javaに似たようなものはありますか?
haskell - 引数として渡された関数を Haskell のさまざまな型に適用する
引数として渡された関数を 2 つの異なる型に適用する方法はありますか? 不自然な例として、(Maybe Int, Maybe Bool)
式(Just 3, Just True)
で を作成できますが、関数でこの動作をより一般的にしようとすると
のようなことができるようにするには、型変数が定数であるgeneric Just
ため、コンパイラが文句を言います。a
これの使用例は、各ノードがタイプによってパラメーター化されているツリー構造にジェネリック関数を適用することです。
haskell - Haskell の型/データ コンストラクターでパラメトリック ポリモーフィック型を制約できますか?
数値型、より具体的には a に制約したいパラメーター化された型がありますFractional
。
そのため、API のユーザーは、使用する可能性のある非整数型 (Float
またはDouble
?) を定義できますが、私が作成した内部 API コードは数値型に対して算術演算を実行できます。私の「内部操作」の結果は整数ではない可能性があり、使用Fractional
するとより正確な結果が得られると理解しているため、整数にしたくありません。
上記を (少なくとも GHCI で) コンパイルすると、次のエラーが発生します。
これは、私がおそらくやり続けたくないことをしていることを示唆しています。つまり、私のデザインはゴミです。
私はこの API で次のことを言おうとしていると思いますFractional
。どうすればこれを達成できますか? または、私は的外れであるか、および/または過剰に設計されていますか?
haskell - Haskell における抽象データ型とパラメトリック ポリモーフィズム
この 2 つの概念の関係を把握しようとしています。
まず、 Abstract Data Typeの例を考えてみましょう:
Haskell wikiによると:
この型は、データ型のユーザーによって提供される構造のいくつかの側面を未定義のままにするため、抽象的です。これは抽象データ型の弱い形式です。ソース
ここで、パラメトリック ポリモーフィズムの概念を考えてみましょう。
パラメトリック ポリモーフィズムとは、値の型に 1 つ以上の (制約のない) 型変数が含まれている場合を指します。そのため、値は、それらの変数を具象型に置き換えた結果の任意の型を採用できます。--ソース
以下に例を示しid :: a -> a
ます。
たとえば、関数
id :: a -> a
の型に制約のない型変数 a が含まれている
質問:これら 2 つの概念の正式な関係は何ですか? 特に、抽象データ型のすべてのインスタンスは、パラメトリック ポリモーフィズムのインスタンスでもありますか? 逆はどうですか?
java - Java ClassCastException がジェネリック インスタンス "new ClazzXXX から ParameterizedType E を取得()"
以下に、実行したい例を貼り付けました。
StringHome
を拡張するインスタンスの汎用クラスを簡単に取得できますが、インスタンスでHome<String>
同じことを行うことはできませんnew Home<String>()
。どうすれば入手できますか?
私の目標は、mainKO
メソッドが機能するようにするmainOK
ことです。
このクラスを実行すると、次のように出力されます。