Note about type variance
This commit is contained in:
parent
6c8715ea74
commit
2ea56ce7ef
@ -191,7 +191,15 @@ contract interface X : Z =
|
|||||||
entrypoint z() = 1
|
entrypoint z() = 1
|
||||||
```
|
```
|
||||||
|
|
||||||
The following subtyping rules apply:
|
#### Subtyping
|
||||||
|
|
||||||
|
The subtyping rules below, mention the variance of a type, which is defined in [Wikipedia](https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)) as follows:
|
||||||
|
|
||||||
|
>Variance refers to how subtyping between more complex types relates to subtyping between their components.
|
||||||
|
|
||||||
|
You can refer to the Wikipedia page for further understanding of type variance.
|
||||||
|
|
||||||
|
In Sophia, the following subtyping rules apply:
|
||||||
|
|
||||||
- A function type `(Args1) => Ret1` is a subtype of `(Args2) => Ret2` when `Ret1`
|
- A function type `(Args1) => Ret1` is a subtype of `(Args2) => Ret2` when `Ret1`
|
||||||
is a subtype of `Ret2` and each argument type from `Args2` is a subtype of its
|
is a subtype of `Ret2` and each argument type from `Args2` is a subtype of its
|
||||||
|
Loading…
x
Reference in New Issue
Block a user