タグ付けされた質問 「polymorphisms」

2
Cのvoid型がempty / bottom型と類似していないのはなぜですか?
ウィキペディアと私が見つけた他のソースはvoid、空のタイプではなくユニットタイプとしてリストCのタイプを見つけました。void空の/下の型の定義によりよく適合するように思えるので、この混乱を見つけます。 void私が知る限り、値は存在しません。 戻り値の型がvoidの関数は、関数が何も返さないため、何らかの副作用しか実行できないことを指定します。 タイプのポインターvoid*は、他のすべてのポインタータイプのサブタイプです。また、void*C との間の変換は暗黙的です。 最後の点voidに、空の型であることの引数としてのメリットがあるかどうかはわかりvoid*ませんvoid。 一方、voidそれ自体は他のすべてのタイプのサブタイプではありません。これは、タイプがボトムタイプであるための要件であると言えます。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

2
明示的なアプリケーションまたはサブタイプなしの上位の多態性?
したがって、言語でより高いランクのポリモーフィズムを持つ2つの主な戦略に精通しています。 System-Fスタイルのポリモーフィズム。関数は明示的に型指定され、インスタンス化は型アプリケーションを通じて明示的に行われます。これらのシステムは命令的である場合があります。 サブタイピングベースのポリモーフィズム。ポリモーフィックタイプは、そのすべてのインスタンス化のサブタイプです。決定可能なサブタイピングを行うには、ポリモーフィズムが予測的でなければなりません。このペーパーでは、そのようなシステムの例を示します。 ただし、Haskellのような一部の言語では、明示的な型アプリケーションを使用せずに、命令的に高いランクの多態性を持っています。 これはどのようにして可能ですか?明示的なインスタンス化またはキャストなしで、サブタイプの概念なしで型をインスタンス化する場合、型チェックは「知る」ことができますか? または、そのようなシステムではタイプチェックは決定可能ですか?これは、Haskellのような言語が、ほとんどの人のユースケースでうまく機能する決定不能なものを実装するケースですか? 編集: 明確にするために、私は多態的に型付けされた値の定義ではなく使用に興味があります。 たとえば、次のように仮定します。 f : forall a . a -> a g : (forall a . a -> a) -> Int val = (g f, f True, f 'a') f引数として与えられたときではなく、それが適用されたときにインスタンス化する必要があることをどのようにして知ることができますか? または、関数型から自分自身を分離するには: f : forall a . a g : (forall a . a) -> …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.