問題タブ [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 投票する
2 に答える
178 参照

f# - F#: 算術演算子とポリモーフィズムの喪失 (値制限?)

このコードはコンパイルされません:

ユニファイヤは、関連付けられている型パラメータを修正し、最初の出現を確認したfと思います。gこのプロセスを支配するものは何ですか? これは「値の制限」に非常に似ていると思いますがfgすでに eta 拡張されています! これは難しい問題です。

事前定義された演算子を整数型に対してアドホックなポリモーフィズムで入力することの背後には、何らかの黒魔術があることは確かに想像できますが、それは単なる私の推測です。任意の情報をいただければ幸いです。

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

f# - 関数をパラメーターとして渡し、それをオーバーロードします

関数の時間を測定したいのですが、最大 3 つのパラメーターを使用する関数もあります。現在、以下の同じコードを 3 つのバリエーションで使用しています。

3つの機能をこれに置き換えたい。

しかし、3つの関数を使用すると、型の不一致のエラーが発生します。関数をパラメーターとして送信し、このように使用することは可能ですか?

0 投票する
7 に答える
106872 参照

javascript - Javascriptのポリモーフィズムとは何ですか?

ポリモーフィズムに関するインターネットで見つけた可能性のある記事を読みました。しかし、その意味と重要性がよく理解できなかったと思います。ほとんどの記事では、なぜそれが重要なのか、OOP (もちろん JavaScript) でポリモーフィックな動作を実現する方法については触れていません。

実装方法がわからないため、コード例を提供できません。質問は以下のとおりです。

  1. それは何ですか?
  2. なぜ必要なのですか?
  3. 使い方?
  4. javascriptでこのポリモーフィックな動作を実現するにはどうすればよいですか?

私はこの例を持っています。しかし、このコードの結果がどうなるかは容易に理解できます。ポリモーフィズム自体について明確な考えはありません。

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

haskell - 2つの可能なタイプの入力引数を持つ関数をHaskellで定義することは可能ですか?

私自身の理解では、Haskell で 2 つの引数を取る関数を定義したいと考えています。両方とも整数、または両方とも文字です。次のように、引数の簡単な検査を行います。

これは、引数が Num 型か Char 型かがわからないため、コンパイルされないことがわかっています。しかし、次のように引数を多態的にすることはできません。

それは、本体の Char (または Int) でなければならないと言っているからです。

Haskellでこれを行うことは可能ですか? カスタムタイプを作成することを考えましたか?何かのようなもの:

しかし、これも有効ではないと思います。一般に、Haskell の関数が明示的に 1 つの型であるか、型クラスにポリモーフィックであり、関数本体での特定の型の使用を禁止するかの中間点があるかどうかについて、私は混乱しています。

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

types - Ocamlで関数の引数をポリモーフィックにできないのはなぜですか?

私が次の機能を持っているかどうか言ってください:

タイプチェッカーによって拒否されました。タイプチェックが拒否する理由がよくわかりません。f は多相関数 (たとえばid) になる可能性があるため、型チェッカーはそれを許可する必要があります。誰か説明できますか?

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

types - Typed Racket で型付け可能な関数のリストの最初の引数をカリー化する関数はありますか?

curry-all関数のリストを取り、そのすべてが最初の引数に同じ種類の値を受け入れ、最初の引数がカリー化された関数のリストを生成する単純な関数を、型なし Racket で呼び出すことができます。

上記の関数の実行例については、pastrack のこのスニペットを参照してください

これは有効な関数ですが、多態的な型付け構造を考えると Typed Racket で型付けすることさえ可能かどうかはわかりません。の型curry自体はすでにかなり複雑であり、明らかに の型はcurry-all必然的にもっと複雑になる必要があります。

この関数を比較的簡単に入力してみましたが、思いどおりに機能しないことは十分承知していました。

明らかに、これはすべての関数が同一の型を持っている場合 (無価値ではありません!) 機能しますが、最初の引数の型が共有されていても、アリティが異なる場合は失敗します。

より一般的なケースで機能するように、この関数の型を指定する方法はありますか?