On this page
Class =:=.=:=
An instance of A =:= B witnesses that the types A and B are equal. It also acts as a A <:< B, but not a B <:< A (directly) due to restrictions on subclassing.
In case of any confusion over which method goes in what direction, all the "Co" methods (including apply) go from left to right in the type ("with" the type), and all the "Contra" methods go from right to left ("against" the type). E.g., apply turns a From into a To, and substituteContra replaces the Tos in a type with Froms.
| Type parameters |
|
|---|---|
| See also | <:< for expressing subtyping constraints |
| Example | An in-place variant of scala.collection.mutable.ArrayBuffer#transpose |
| Supertypes |
Abstract methods
Source
override def substituteBoth[F[_, _]](ftf: F[To, From]): F[From, To]
Substitute To for From and From for To in the type F[To, From], given that F is a type constructor of two arguments. Essentially swaps To and From in ftf's type.
Equivalent in power to each of substituteCo and substituteContra.
This method is impossible to implement without throwing or otherwise "cheating" unless From = To, so it ensures that this really represents a type equality.
| Returns |
|
|---|---|
| Definition Classes | <:< |
Concrete methods
Source
If From = To and To = C, then From = C (equality is transitive)
Source
override def apply(f: From): To
Coerce a From into a To. This is guaranteed to be the identity function.
This method is often called implicitly as an implicit A =:= B doubles as an implicit view A => B.
Source
If From = To and C = From, then C = To (equality is transitive)
Source
If From = To then To = From (equality is symmetric)
Source
Lift this evidence over any type constructor F.
| Definition Classes | <:< |
|---|
Source
override def liftContra[F[_]]: F[To] =:= F[From]
Lift this evidence over the type constructor F, but flipped.
| Definition Classes | <:< |
|---|
Source
override def substituteCo[F[_]](ff: F[From]): F[To]
Substitute the From in the type F[From], where F is any type constructor, for To.
Equivalent in power to each of substituteBoth and substituteContra.
This method is impossible to implement without throwing or otherwise "cheating" unless From = To, so it ensures that this really represents a type equality.
| Returns |
|
|---|---|
| Definition Classes | <:< |
Source
override def substituteContra[F[_]](ft: F[To]): F[From]
Substitute the To in the type F[To], where F is any type constructor, for From.
Equivalent in power to each of substituteBoth and substituteCo.
This method is impossible to implement without throwing or otherwise "cheating" unless From = To, so it ensures that this really represents a type equality.
| Returns |
|
|---|---|
| Definition Classes | <:< |
Inherited methods
Source
If From <: To and To <: C, then From <: C (subtyping is transitive)
| Inherited from | <:< |
|---|
Source
override def andThen[C](r: To => C): From => C
Composes two instances of Function1 in a new Function1, with this function applied first.
| Type parameters |
|
|---|---|
| Value parameters |
|
| Returns | a new function |
| Definition Classes | <:< -> Function1 |
| Inherited from | <:< |
Source
If From <: To and C <: From, then C <: To (subtyping is transitive)
| Inherited from | <:< |
|---|
Source
override def compose[C](r: C => From): C => To
Composes two instances of Function1 in a new Function1, with this function applied last.
| Type parameters |
|
|---|---|
| Value parameters |
|
| Returns | a new function |
| Definition Classes | <:< -> Function1 |
| Inherited from | <:< |
Source
Returns a string representation of the object.
The default representation is platform dependent.
| Returns | a string representation of the object. |
|---|---|
| Definition Classes | Function1 -> Any |
| Inherited from | Function1 |
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/=:=.html