Covariance and contravariance (computer science) (original) (raw)
- لاتباين وتباين مرافق وتباين معاكس (Invariance، Covariance، and Contravariance) ثلاثة مفاهيم مترابطة تظهر سوية في العديد من الحقول بدأ من الإحصاء والاحتمال إلى فروع الفيزياء وغيرها. لذلك يشكل تكوين فكرة واضحة حول هذه المصطلحات أهمية للعديد من هذه العلوم. (ar)
- In der objektorientierten Programmierung unterscheidet Kovarianz und Kontravarianz, ob ein Aspekt (d. h. eine Typdeklaration) gleichartig der Vererbungsrichtung (kovariant) oder entgegengesetzt zu dieser (kontravariant) ist. Liegt in der Unterklasse keine Änderung gegenüber der Oberklasse vor, wird das als Invarianz bezeichnet. Den Begriffen liegen die Überlegungen des Ersetzbarkeitsprinzips zugrunde: Objekte der Oberklasse müssen durch Objekte einer ihrer Unterklassen ersetzbar sein. Das bedeutet zum Beispiel, dass die Methoden der Unterklasse mindestens die Parameter akzeptieren müssen, die die Oberklasse auch akzeptieren würde (Kontravarianz). Die Methoden der Unterklasse müssen ebenfalls Werte zurückliefern, die mit der Oberklasse vereinbar sind, also nie allgemeineren Typs sind, als der Rückgabetyp der Oberklasse (Kovarianz). (de)
- Many programming language type systems support subtyping. For instance, if the type Cat is a subtype of Animal, then an expression of type Cat should be substitutable wherever an expression of type Animal is used. Variance refers to how subtyping between more complex types relates to subtyping between their components. For example, how should a list of Cats relate to a list of Animals? Or how should a function that returns Cat relate to a function that returns Animal? Depending on the variance of the type constructor, the subtyping relation of the simple types may be either preserved, reversed, or ignored for the respective complex types. In the OCaml programming language, for example, "list of Cat" is a subtype of "list of Animal" because the list type constructor is covariant. This means that the subtyping relation of the simple types are preserved for the complex types. On the other hand, "function from Animal to String" is a subtype of "function from Cat to String" because the function type constructor is contravariant in the parameter type. Here, the subtyping relation of the simple types is reversed for the complex types. In other words, covariance is the quality of being different by being more specific (Cat is covariant to Animal) while contravariance is the quality of being different by being more general (Animal is contravariant to Cat). A programming language designer will consider variance when devising typing rules for language features such as arrays, inheritance, and generic datatypes. By making type constructors covariant or contravariant instead of invariant, more programs will be accepted as well-typed. On the other hand, programmers often find contravariance unintuitive, and accurately tracking variance to avoid runtime type errors can lead to complex typing rules. In order to keep the type system simple and allow useful programs, a language may treat a type constructor as invariant even if it would be safe to consider it variant, or treat it as covariant even though that could violate type safety. (en)
- La covarianza y la contravarianza son propiedades de la relación entre dos tipos compuestos, e indican si se mantiene o se invierte la relación de orden entre los tipos que los componen. Tienen especial relevancia en el diseño de lenguajes tipados, puesto que determinan cuándo es posible sustituir un tipo determinado por un subtipo o un supertipo. Sea por ejemplo un sistema de tipos en el que int y float identifican a los números enteros y racionales, respectivamente, que además guardan una relación de orden int ≤ float, indicando que int es un subtipo de float. Sea también int⟶ el tipo de una función que acepta un parámetro de tipo int. Si el sistema de tipos permite usar una función float⟶ en cualquier lugar donde se necesita una función int⟶, se dice entonces que las funciones son contravariantes en los argumentos, puesto que float⟶ ≤ int⟶ y en el tipo compuesto se invierte la relación de orden entre los tipos simples int ≤ float. Si en cambio se tiene una función ⟶float que devuelve un racional, y el sistema de tipos permite usar una función ⟶int que devuelve un entero en su lugar, entonces ⟶int ≤ ⟶float, y se dice que las funciones son covariantes en los valores de retorno. En los lenguajes modernos se suele hablar de varianza, y aplica no sólo a las relaciones de subtipado entre funciones libres, si no también a cómo funciona la especialización de métodos en subclases, o a cómo de restrictivos son los parámetros en los tipos compuestos que contienen genéricos. (es)
- In informatica, covarianza e controvarianza sono proprietà che caratterizzano alcuni operatori sui tipi. Un operatore è covariante se conserva la relazione di sottotipo, controvariante se la inverte. Prendono il nome dalle omonime proprietà dei funtori in teoria delle categorie. (it)
- (コンピュータプログラミングの型システムでの)共変性と反変性(きょうへんせいとはんぺんせい、covariance and contravariance)とは、データコンテナのサブタイプ関係が、そのデータ要素のサブタイプ関係に連動して定義されるという概念を指す。また、関数の型のサブタイプ関係での、引数型と返り値型の汎化特化の制約を定義する概念でもある。ジェネリックなデータ構造、関数の型、クラスのメソッド、ジェネリックなクラス、ジェネリック関数などに適用されている。 共変性と反変性は、圏論由来の用語である。この用語には以下の概念がある。 * 共変(covariant)は、派生 <: 基底 とすると、B <: A ならば I <: I * <: I * * * (ja)
- Ковариа́нтность и контравариа́нтность в программировании — способы переноса наследования типов на производные от них типы — контейнеры, обобщённые типы, делегаты и т. п. Термины произошли от аналогичных понятий теории категорий «ковариантный» и «контравариантный функтор». (ru)
- Варіантність — у програмуванні, спосіб перенесення наслідування типів на нові типи попередніми (контейнери, узагальнені типи, ). Терміни виникли від термінів теорії категорій «коваріантний» та «контраваріантний» функтор. (uk)
- dbr:Sather
- dbr:Scala_(programming_language)
- dbr:Method_overriding
- dbr:Animal_shelter
- dbr:Joshua_Bloch
- dbr:Robustness_principle
- dbr:Wildcard_(Java)
- dbr:Closure_(computer_science)
- dbr:Eiffel_(programming_language)
- dbr:Function_overloading
- dbr:Generic_datatype
- dbr:Bounded_quantification
- dbr:Luca_Cardelli
- dbr:Common_Lisp_Object_System
- dbr:Function_type
- dbr:Parametric_polymorphism
- dbr:Polymorphism_(computer_science)
- dbr:C++
- dbr:C_Sharp_(programming_language)
- dbc:Polymorphism_(computer_science)
- dbr:Type_system
- dbr:Duck_typing
- dbr:Liskov_substitution_principle
- dbr:D_(programming_language)
- dbr:Dart_(programming_language)
- dbr:Unified_Modeling_Language
- dbr:Higher-order_function
- dbr:Java_(programming_language)
- dbr:Covariant_return_type
- dbr:Array_data_type
- dbc:Object-oriented_programming
- dbc:Type_theory
- dbr:John_C._Reynolds
- dbr:Java_Platform,_Standard_Edition
- dbr:Martin_Odersky
- dbr:Inheritance_(computer_science)
- dbr:Kotlin_(programming_language)
- dbr:OCaml
- dbr:Category_theory
- dbr:Rule_of_inference
- dbr:Variable_shadowing
- dbr:Undecidable_problem
- dbr:Type_inference
- dbr:Programming_language
- dbr:Subtyping
- dbr:Existential_type
- dbr:First-class_function
- dbr:Multiple_dispatch
- dbr:Type_constructor
- dbr:Java_(Programming_language)
- dbr:Covariance_and_contravariance_of_functors
- dbr:File:AnimalShelter.svg
- dbr:File:Inheritance_contravariant_argument_animalshelter.svg
- dbr:File:Inheritance_covariant_argument_animalshelter.svg
- dbr:File:Inheritance_covariant_return_animalshelter.svg
- dbr:File:Java_wildcard_subtyping.svg
- لاتباين وتباين مرافق وتباين معاكس (Invariance، Covariance، and Contravariance) ثلاثة مفاهيم مترابطة تظهر سوية في العديد من الحقول بدأ من الإحصاء والاحتمال إلى فروع الفيزياء وغيرها. لذلك يشكل تكوين فكرة واضحة حول هذه المصطلحات أهمية للعديد من هذه العلوم. (ar)
- In informatica, covarianza e controvarianza sono proprietà che caratterizzano alcuni operatori sui tipi. Un operatore è covariante se conserva la relazione di sottotipo, controvariante se la inverte. Prendono il nome dalle omonime proprietà dei funtori in teoria delle categorie. (it)
- (コンピュータプログラミングの型システムでの)共変性と反変性(きょうへんせいとはんぺんせい、covariance and contravariance)とは、データコンテナのサブタイプ関係が、そのデータ要素のサブタイプ関係に連動して定義されるという概念を指す。また、関数の型のサブタイプ関係での、引数型と返り値型の汎化特化の制約を定義する概念でもある。ジェネリックなデータ構造、関数の型、クラスのメソッド、ジェネリックなクラス、ジェネリック関数などに適用されている。 共変性と反変性は、圏論由来の用語である。この用語には以下の概念がある。 * 共変(covariant)は、派生 <: 基底 とすると、B <: A ならば I <: I * <: I * * * (ja)
- Ковариа́нтность и контравариа́нтность в программировании — способы переноса наследования типов на производные от них типы — контейнеры, обобщённые типы, делегаты и т. п. Термины произошли от аналогичных понятий теории категорий «ковариантный» и «контравариантный функтор». (ru)
- Варіантність — у програмуванні, спосіб перенесення наслідування типів на нові типи попередніми (контейнери, узагальнені типи, ). Терміни виникли від термінів теорії категорій «коваріантний» та «контраваріантний» функтор. (uk)
- In der objektorientierten Programmierung unterscheidet Kovarianz und Kontravarianz, ob ein Aspekt (d. h. eine Typdeklaration) gleichartig der Vererbungsrichtung (kovariant) oder entgegengesetzt zu dieser (kontravariant) ist. Liegt in der Unterklasse keine Änderung gegenüber der Oberklasse vor, wird das als Invarianz bezeichnet. (de)
- Many programming language type systems support subtyping. For instance, if the type Cat is a subtype of Animal, then an expression of type Cat should be substitutable wherever an expression of type Animal is used. On the other hand, "function from Animal to String" is a subtype of "function from Cat to String" because the function type constructor is contravariant in the parameter type. Here, the subtyping relation of the simple types is reversed for the complex types. (en)
- La covarianza y la contravarianza son propiedades de la relación entre dos tipos compuestos, e indican si se mantiene o se invierte la relación de orden entre los tipos que los componen. Tienen especial relevancia en el diseño de lenguajes tipados, puesto que determinan cuándo es posible sustituir un tipo determinado por un subtipo o un supertipo. (es)
- لاتباين وتباين مرافق وتباين معاكس (ar)
- Kovarianz und Kontravarianz (de)
- Covarianza y contravarianza (ciencias de la computación) (es)
- Covariance and contravariance (computer science) (en)
- Covarianza e controvarianza (informatica) (it)
- 共変性と反変性 (計算機科学) (ja)
- 공변성과 반공변성 (컴퓨터 과학) (ko)
- Ковариантность и контравариантность (программирование) (ru)
- Коваріантність і контраваріантність (програмування) (uk)
- 协变与逆变 (zh)
is dbo:wikiPageRedirects of
- dbr:Nonvariance
- dbr:Nonvariance_(computer_science)
- dbr:Nonvariant
- dbr:Invariance_(computer_science)
- dbr:Variance_(computer_science)
- dbr:Variance_annotation
- dbr:Parameter_covariance
- dbr:Covariance_(computer_science)
- dbr:Covariant_return_types
- dbr:Covariant_type
- dbr:Bivariance
- dbr:Bivariance_(computer_science)
- dbr:Bivariant
- dbr:Contravariance_(computer_science)
- dbr:Contravariance_and_covariance_(computer_science)