@@ -14,9 +14,9 @@ TypeBounds ::= [‘>:’ Type] [‘<:’ Type]
14
14
15
15
### Type Checking
16
16
17
- A type lambda such as ` [X] =>> F[X] ` defines a function from types to types. The parameter(s) may carry bounds and variance annotations .
18
- If a parameter is bounded, as in ` [X >: L <: H ] =>> F[X] ` it is checked that arguments to the parameters conform to the bounds ` L ` and ` H ` .
19
- Only the upper bound ` H ` can be F-bounded, i.e. ` X ` can appear in it.
17
+ A type lambda such as ` [X] =>> F[X] ` defines a function from types to types. The parameter(s) may carry bounds.
18
+ If a parameter is bounded, as in ` [X >: L <: U ] =>> F[X] ` it is checked that arguments to the parameters conform to the bounds ` L ` and ` U ` .
19
+ Only the upper bound ` U ` can be F-bounded, i.e. ` X ` can appear in it.
20
20
21
21
## Subtyping Rules
22
22
@@ -31,7 +31,7 @@ Then `TL1 <: TL2`, if
31
31
` L1 <: L2 ` and ` U2 <: U1 ` ),
32
32
- ` R1 <: R2 `
33
33
34
- Here we have relied on alpha renaming to bring match the two bound types ` X ` .
34
+ Here we have relied on alpha renaming to match the two bound types ` X ` .
35
35
36
36
A partially applied type constructor such as ` List ` is assumed to be equivalent to
37
37
its eta expansion. I.e, ` List = [X] =>> List[X] ` . This allows type constructors to be compared with type lambdas.
@@ -46,7 +46,7 @@ is regarded as a shorthand for an unparameterized definition with a type lambda
46
46
``` scala
47
47
type T = [X ] =>> R
48
48
```
49
- If the a type definition carries ` + ` or ` - ` variance annotations,
49
+ If the type definition carries ` + ` or ` - ` variance annotations,
50
50
it is checked that the variance annotations are satisfied by the type lambda.
51
51
For instance,
52
52
``` scala
0 commit comments