11import scala .language .strictEquality
22
33/**
4- * Multiversal Equality: http ://dotty.epfl.ch/docs/reference/multiversal-equality.html
5- * scala.Eq definition: https://github.com/lampepfl/dotty/blob/master/library/src/scala/Eq .scala
4+ * Multiversal Equality: https ://dotty.epfl.ch/docs/reference/contextual /multiversal-equality.html
5+ * scala.Eq definition: https://github.com/lampepfl/dotty/blob/master/library/src/scala/Eql .scala
66 */
77object MultiversalEquality {
88
99 def test : Unit = {
1010
1111 // Values of types Int and String cannot be compared with == or !=,
12- // unless we add a custom implicit like:
13- implicit def eqIntString : Eq [Int , String ] = Eq
12+ // unless we add the derived implied instance like:
13+ implied for Eql [Int , String ] = Eql .derived
1414 println(3 == " 3" )
1515
1616 // By default, all numbers are comparable, because of;
17- // implicit def eqNumber : Eq [Number, Number] = Eq
17+ // implicit def eqlNumber: Eql [Number, Number] = derived
1818 println(3 == 5.1 )
1919
2020 // By default, all Sequences are comparable, because of;
21- // implicit def eqSeq [T, U](implicit eq: Eq [T, U]): Eq[Seq [T], Seq [U]] = Eq
21+ // implicit def eqlSeq [T, U](implicit eq: Eql [T, U]): Eql[GenSeq [T], GenSeq [U]] = derived
2222 println(List (1 , 2 ) == Vector (1 , 2 ))
2323
2424 class A (a : Int )
@@ -27,10 +27,10 @@ object MultiversalEquality {
2727 val a = new A (4 )
2828 val b = new B (4 )
2929
30- // scala.language.strictEquality is enabled, therefore we need some extra implicits
30+ // scala.language.strictEquality is enabled, therefore we need some extra implied instances
3131 // to compare instances of A and B.
32- implicit def eqAB : Eq [A , B ] = Eq
33- implicit def eqBA : Eq [B , A ] = Eq
32+ implied for Eql [A , B ] = Eql .derived
33+ implied for Eql [B , A ] = Eql .derived
3434
3535 println(a != b)
3636 println(b == a)
0 commit comments