Attributes
- Companion
- class
- Graph
-
- Supertypes
- Self type
-
HKTypeLambda.type
Members list
Value members
Concrete methods
Distributes Lambda inside type bounds. Examples:
Distributes Lambda inside type bounds. Examples:
type T[X] = U becomes type T = [X] -> U
type T[X] <: U becomes type T >: Nothing <: ([X] -> U)
type T[X] >: L <: U becomes type T >: ([X] -> L) <: ([X] -> U)
The variances of regular TypeBounds types, as well as of match aliases and of opaque aliases are always determined from the given parameters params. The variances of other type aliases are determined from the given parameters only if one of these parameters carries a + or - variance annotation. Type aliases without variance annotation are treated structurally. That is, their parameter variances are determined by how the parameter(s) appear in the result type.
Examples:
type T[X] >: A // X is invariant type T[X] <: List[X] // X is invariant type T[X] = List[X] // X is covariant (determined structurally) opaque type T[X] = List[X] // X is invariant opaque type T[+X] = List[X] // X is covariant type T[A, B] = A => B // A is contravariant, B is covariant (determined structurally) type T[A, +B] = A => B // A is invariant, B is covariant
Attributes
Attributes
- Definition Classes
Inherited methods
If tparam is a sealed type parameter symbol of a polymorphic method, add a @caps.Sealed annotation to the upperbound in tp.
If tparam is a sealed type parameter symbol of a polymorphic method, add a @caps.Sealed annotation to the upperbound in tp.
Attributes
- Inherited from:
- LambdaTypeCompanion
Attributes
- Inherited from:
- LambdaTypeCompanion
Attributes
- Inherited from:
- LambdaTypeCompanion
Attributes
- Inherited from:
- LambdaTypeCompanion
Attributes
- Inherited from:
- TypeLambdaCompanion
Attributes
- Inherited from:
- LambdaTypeCompanion
Attributes
- Inherited from:
- TypeLambdaCompanion